diff --git a/package-lock.json b/package-lock.json index d399c1dae..41a093ea3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -69,7 +69,7 @@ "eslint": "^8.56.0", "husky": "^9.0.7", "postcss": "^8", - "prettier": "^3.2.4", + "prettier": "3.2.5", "prisma": "^5.6.0", "tailwindcss": "^3.3.0", "ts-node": "^10.9.2", @@ -6743,11 +6743,10 @@ } }, "node_modules/prettier": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.2.4.tgz", - "integrity": "sha512-FWu1oLHKCrtpO1ypU6J0SbK2d9Ckwysq6bHj/uaCP26DxrPpppCLQRGVuqAxSTvhF00AcvDRyYrLNW7ocBhFFQ==", + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.2.5.tgz", + "integrity": "sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==", "dev": true, - "license": "MIT", "bin": { "prettier": "bin/prettier.cjs" }, diff --git a/package.json b/package.json index 96748dc64..f02c6da12 100644 --- a/package.json +++ b/package.json @@ -45,8 +45,8 @@ "dayjs": "^1.11.10", "discord-oauth2": "^2.11.0", "discord.js": "^14.14.1", - "fuse.js": "^7.0.0", "embla-carousel-react": "^8.0.0", + "fuse.js": "^7.0.0", "jose": "^5.2.2", "jsonwebtoken": "^9.0.2", "lucide-react": "^0.321.0", @@ -83,7 +83,7 @@ "eslint": "^8.56.0", "husky": "^9.0.7", "postcss": "^8", - "prettier": "^3.2.4", + "prettier": "3.2.5", "prisma": "^5.6.0", "tailwindcss": "^3.3.0", "ts-node": "^10.9.2", diff --git a/prisma/seed.ts b/prisma/seed.ts index fe3ba0b86..9be7ad0f8 100644 --- a/prisma/seed.ts +++ b/prisma/seed.ts @@ -147,30 +147,54 @@ async function main() { data: { id: 1, contentId: 3, - video_1080p_mp4_1: 'https://www.w3schools.com/html/mov_bbb.mp4', - video_1080p_mp4_2: 'https://www.w3schools.com/html/mov_bbb.mp4', - video_1080p_mp4_3: 'https://www.w3schools.com/html/mov_bbb.mp4', - video_1080p_mp4_4: 'https://www.w3schools.com/html/mov_bbb.mp4', - video_1080p_1: 'https://www.w3schools.com/html/mov_bbb.mp4', - video_1080p_2: 'https://www.w3schools.com/html/mov_bbb.mp4', - video_1080p_3: 'https://www.w3schools.com/html/mov_bbb.mp4', - video_1080p_4: 'https://www.w3schools.com/html/mov_bbb.mp4', - video_720p_mp4_1: 'https://www.w3schools.com/html/mov_bbb.mp4', - video_720p_mp4_2: 'https://www.w3schools.com/html/mov_bbb.mp4', - video_720p_mp4_3: 'https://www.w3schools.com/html/mov_bbb.mp4', - video_720p_mp4_4: 'https://www.w3schools.com/html/mov_bbb.mp4', - video_720p_1: 'https://www.w3schools.com/html/mov_bbb.mp4', - video_720p_2: 'https://www.w3schools.com/html/mov_bbb.mp4', - video_720p_3: 'https://www.w3schools.com/html/mov_bbb.mp4', - video_720p_4: 'https://www.w3schools.com/html/mov_bbb.mp4', - video_360p_mp4_1: 'https://www.w3schools.com/html/mov_bbb.mp4', - video_360p_mp4_2: 'https://www.w3schools.com/html/mov_bbb.mp4', - video_360p_mp4_3: 'https://www.w3schools.com/html/mov_bbb.mp4', - video_360p_mp4_4: 'https://www.w3schools.com/html/mov_bbb.mp4', - video_360p_1: 'https://www.w3schools.com/html/mov_bbb.mp4', - video_360p_2: 'https://www.w3schools.com/html/mov_bbb.mp4', - video_360p_3: 'https://www.w3schools.com/html/mov_bbb.mp4', - video_360p_4: 'https://www.w3schools.com/html/mov_bbb.mp4', + // video_1080p_mp4_1: 'https://www.w3schools.com/html/mov_bbb.mp4', + // video_1080p_mp4_2: 'https://www.w3schools.com/html/mov_bbb.mp4', + // video_1080p_mp4_3: 'https://www.w3schools.com/html/mov_bbb.mp4', + // video_1080p_mp4_4: 'https://www.w3schools.com/html/mov_bbb.mp4', + // video_1080p_1: 'https://www.w3schools.com/html/mov_bbb.mp4', + // video_1080p_2: 'https://www.w3schools.com/html/mov_bbb.mp4', + // video_1080p_3: 'https://www.w3schools.com/html/mov_bbb.mp4', + // video_1080p_4: 'https://www.w3schools.com/html/mov_bbb.mp4', + // video_720p_mp4_1: 'https://www.w3schools.com/html/mov_bbb.mp4', + // video_720p_mp4_2: 'https://www.w3schools.com/html/mov_bbb.mp4', + // video_720p_mp4_3: 'https://www.w3schools.com/html/mov_bbb.mp4', + // video_720p_mp4_4: 'https://www.w3schools.com/html/mov_bbb.mp4', + // video_720p_1: 'https://www.w3schools.com/html/mov_bbb.mp4', + // video_720p_2: 'https://www.w3schools.com/html/mov_bbb.mp4', + // video_720p_3: 'https://www.w3schools.com/html/mov_bbb.mp4', + // video_720p_4: 'https://www.w3schools.com/html/mov_bbb.mp4', + // video_360p_mp4_1: 'https://www.w3schools.com/html/mov_bbb.mp4', + // video_360p_mp4_2: 'https://www.w3schools.com/html/mov_bbb.mp4', + // video_360p_mp4_3: 'https://www.w3schools.com/html/mov_bbb.mp4', + // video_360p_mp4_4: 'https://www.w3schools.com/html/mov_bbb.mp4', + // video_360p_1: 'https://www.w3schools.com/html/mov_bbb.mp4', + // video_360p_2: 'https://www.w3schools.com/html/mov_bbb.mp4', + // video_360p_3: 'https://www.w3schools.com/html/mov_bbb.mp4', + // video_360p_4: 'https://www.w3schools.com/html/mov_bbb.mp4', + video_1080p_mp4_1: 'https://www.youtube.com/watch?v=IJkYipYNEtI', + video_1080p_mp4_2: 'https://www.youtube.com/watch?v=IJkYipYNEtI', + video_1080p_mp4_3: 'https://www.youtube.com/watch?v=IJkYipYNEtI', + video_1080p_mp4_4: 'https://www.youtube.com/watch?v=IJkYipYNEtI', + video_1080p_1: 'https://www.youtube.com/watch?v=IJkYipYNEtI', + video_1080p_2: 'https://www.youtube.com/watch?v=IJkYipYNEtI', + video_1080p_3: 'https://www.youtube.com/watch?v=IJkYipYNEtI', + video_1080p_4: 'https://www.youtube.com/watch?v=IJkYipYNEtI', + video_720p_mp4_1: 'https://www.youtube.com/watch?v=IJkYipYNEtI', + video_720p_mp4_2: 'https://www.youtube.com/watch?v=IJkYipYNEtI', + video_720p_mp4_3: 'https://www.youtube.com/watch?v=IJkYipYNEtI', + video_720p_mp4_4: 'https://www.youtube.com/watch?v=IJkYipYNEtI', + video_720p_1: 'https://www.youtube.com/watch?v=IJkYipYNEtI', + video_720p_2: 'https://www.youtube.com/watch?v=IJkYipYNEtI', + video_720p_3: 'https://www.youtube.com/watch?v=IJkYipYNEtI', + video_720p_4: 'https://www.youtube.com/watch?v=IJkYipYNEtI', + video_360p_mp4_1: 'https://www.youtube.com/watch?v=IJkYipYNEtI', + video_360p_mp4_2: 'https://www.youtube.com/watch?v=IJkYipYNEtI', + video_360p_mp4_3: 'https://www.youtube.com/watch?v=IJkYipYNEtI', + video_360p_mp4_4: 'https://www.youtube.com/watch?v=IJkYipYNEtI', + video_360p_1: 'https://www.youtube.com/watch?v=IJkYipYNEtI', + video_360p_2: 'https://www.youtube.com/watch?v=IJkYipYNEtI', + video_360p_3: 'https://www.youtube.com/watch?v=IJkYipYNEtI', + video_360p_4: 'https://www.youtube.com/watch?v=IJkYipYNEtI', slides: 'https://appx-recordings.s3.ap-south-1.amazonaws.com/drm/100x/slides/Loops%2C+callbacks.pdf', }, diff --git a/src/components/YoutubeRenderer.tsx b/src/components/YoutubeRenderer.tsx new file mode 100644 index 000000000..b5a8ef79f --- /dev/null +++ b/src/components/YoutubeRenderer.tsx @@ -0,0 +1,37 @@ +import React from 'react'; + +interface Props { + videoURL: string; + width?: string; + height?: string; + style?: React.CSSProperties; + className?: string; +} + +export const YoutubeRenderer = ({ + width, + height, + videoURL, + style, + className, +}: Props) => { + if (!videoURL) { + return
No video Available.
; + } + + return ( + + ); +}; + +export default YoutubeRenderer; diff --git a/src/components/admin/ContentRendererClient.tsx b/src/components/admin/ContentRendererClient.tsx index d864a5f3a..3d003ccd7 100644 --- a/src/components/admin/ContentRendererClient.tsx +++ b/src/components/admin/ContentRendererClient.tsx @@ -5,6 +5,20 @@ import { VideoPlayerSegment } from '@/components/VideoPlayerSegment'; import VideoContentChapters from '../VideoContentChapters'; import { useMemo, useState } from 'react'; import { handleMarkAsCompleted } from '@/lib/utils'; +import YoutubeRenderer from '../YoutubeRenderer'; + +const isYouTubeUrl = (url: string) => { + const youtubePattern: RegExp = + /(?:youtu|youtube)(?:\.com|\.be)\/(?:watch\?v=)?([\w-]+)/; + return youtubePattern.test(url); +}; + +const extractYouTubeIdFromUrl = (url: string) => { + const match: RegExpMatchArray | null = url.match( + /(?:youtu\.be\/|(?:youtube\.com\/(?:v\/|u\/\w\/|embed\/|watch\?v=)))([\w-]+)/, + ); + return match ? match[1] : null; +}; export const ContentRendererClient = ({ metadata, @@ -63,6 +77,11 @@ export const ContentRendererClient = ({ src: mpdUrl, type: 'application/x-mpegURL', }; + } else if (isYouTubeUrl(mpdUrl)) { + return { + src: mpdUrl, + type: 'video/youtube', + }; } return { src: mpdUrl, @@ -89,101 +108,107 @@ export const ContentRendererClient = ({ return (
-
- { - setContentCompleted(true); - }} + {source.type === 'video/youtube' ? ( + -
-
-
-
- {content.title} + ) : ( +
+ { + setContentCompleted(true); + }} + /> +
+
+
+
+ {content.title} +
+ +
- +
+ {/* */} +
+ {metadata.slides ? ( + + ) : null} + {!showChapters && metadata.segments?.length > 0 && ( + + )} +
- -
- {/* */} -
- {metadata.slides ? ( - - ) : null} - {!showChapters && metadata.segments?.length > 0 && ( + {nextContent ? ( +
- )} -
+ {nextContent.title} + {' '} +
+ ) : null}
- {nextContent ? ( -
- {' '} -
- ) : null} -
- + )} {showChapters && (