diff --git a/src/components/CourseCard.tsx b/src/components/CourseCard.tsx index d0ca115d5..9a16e3258 100644 --- a/src/components/CourseCard.tsx +++ b/src/components/CourseCard.tsx @@ -21,12 +21,12 @@ export const CourseCard = ({
{course.totalVideos !== undefined && course.totalVideosWatched !== undefined && ( - - )} + + )}
{course.title}
diff --git a/src/components/Sidebar.tsx b/src/components/Sidebar.tsx index 6bdac5d62..89f7469b1 100644 --- a/src/components/Sidebar.tsx +++ b/src/components/Sidebar.tsx @@ -157,16 +157,16 @@ export function ToggleButton({ ); diff --git a/src/components/VideoPlayer.tsx b/src/components/VideoPlayer.tsx index ef1cbb434..92ef05e61 100644 --- a/src/components/VideoPlayer.tsx +++ b/src/components/VideoPlayer.tsx @@ -22,23 +22,23 @@ export const VideoPlayer = ({ } const handleKeyPress = (event: any) => { switch (event.code) { - case 'Space': // Space bar for play/pause - if (player.paused()) { - player.play(); + case 'Space': // Space bar for play/pause + if (player.paused()) { + player.play(); + event.stopPropagation(); + } else { + player.pause(); + event.stopPropagation(); + } + break; + case 'ArrowRight': // Right arrow for seeking forward 5 seconds + player.currentTime(player.currentTime() + 5); event.stopPropagation(); - } else { - player.pause(); + break; + case 'ArrowLeft': // Left arrow for seeking backward 5 seconds + player.currentTime(player.currentTime() - 5); event.stopPropagation(); - } - break; - case 'ArrowRight': // Right arrow for seeking forward 5 seconds - player.currentTime(player.currentTime() + 5); - event.stopPropagation(); - break; - case 'ArrowLeft': // Left arrow for seeking backward 5 seconds - player.currentTime(player.currentTime() - 5); - event.stopPropagation(); - break; + break; } }; diff --git a/src/components/VideoPlayer2.tsx b/src/components/VideoPlayer2.tsx index b14d2bfa1..258835548 100644 --- a/src/components/VideoPlayer2.tsx +++ b/src/components/VideoPlayer2.tsx @@ -57,6 +57,7 @@ export const VideoPlayer: FunctionComponent = ({ let volumeSetTimeout: ReturnType | null = null; const handleKeyPress = (event: any) => { const isShiftPressed = event.shiftKey; + const tracks: TextTrackList = player.textTracks(); if (isShiftPressed) { const currentIndexPeriod: number = PLAYBACK_RATES.indexOf( player.playbackRate(), @@ -77,40 +78,40 @@ export const VideoPlayer: FunctionComponent = ({ const newIndexDown = currentIndexDown !== 0 ? currentIndexDown - 1 : currentIndexDown; switch (event.code) { - case 'Period': // Increase playback speed - player.playbackRate(PLAYBACK_RATES[newIndexPeriod]); - event.stopPropagation(); - break; - case 'Comma': // Decrease playback speed - player.playbackRate(PLAYBACK_RATES[newIndexComma]); - event.stopPropagation(); - break; - case 'ArrowUp': // Increase volume - videoRef.current?.children[0].children[6].children[3].classList.add( - 'vjs-hover', - ); - if (volumeSetTimeout !== null) clearTimeout(volumeSetTimeout); - volumeSetTimeout = setTimeout(() => { - videoRef.current?.children[0].children[6].children[3].classList.remove( + case 'Period': // Increase playback speed + player.playbackRate(PLAYBACK_RATES[newIndexPeriod]); + event.stopPropagation(); + break; + case 'Comma': // Decrease playback speed + player.playbackRate(PLAYBACK_RATES[newIndexComma]); + event.stopPropagation(); + break; + case 'ArrowUp': // Increase volume + videoRef.current?.children[0].children[6].children[3].classList.add( 'vjs-hover', ); - }, 1000); - player.volume(VOLUME_LEVELS[newIndexUp]); - event.stopPropagation(); - break; - case 'ArrowDown': // Decrease volume - videoRef.current?.children[0].children[6].children[3].classList.add( - 'vjs-hover', - ); - if (volumeSetTimeout !== null) clearTimeout(volumeSetTimeout); - volumeSetTimeout = setTimeout(() => { - videoRef.current?.children[0].children[6].children[3].classList.remove( + if (volumeSetTimeout !== null) clearTimeout(volumeSetTimeout); + volumeSetTimeout = setTimeout(() => { + videoRef.current?.children[0].children[6].children[3].classList.remove( + 'vjs-hover', + ); + }, 1000); + player.volume(VOLUME_LEVELS[newIndexUp]); + event.stopPropagation(); + break; + case 'ArrowDown': // Decrease volume + videoRef.current?.children[0].children[6].children[3].classList.add( 'vjs-hover', ); - }, 1000); - player.volume(VOLUME_LEVELS[newIndexDown]); - event.stopPropagation(); - break; + if (volumeSetTimeout !== null) clearTimeout(volumeSetTimeout); + volumeSetTimeout = setTimeout(() => { + videoRef.current?.children[0].children[6].children[3].classList.remove( + 'vjs-hover', + ); + }, 1000); + player.volume(VOLUME_LEVELS[newIndexDown]); + event.stopPropagation(); + break; } } else if (event.code === 'KeyT') { player.playbackRate(2); @@ -126,70 +127,74 @@ export const VideoPlayer: FunctionComponent = ({ return; // Do nothing if the active element is an input or textarea } switch (event.code) { - case 'Space': // Space bar for play/pause - if (player.paused()) { - player.play(); + case 'Space': // Space bar for play/pause + if (player.paused()) { + player.play(); + event.stopPropagation(); + } else { + player.pause(); + event.stopPropagation(); + } + event.preventDefault(); + break; + case 'ArrowRight': // Right arrow for seeking forward 5 seconds + player.currentTime(player.currentTime() + 5); event.stopPropagation(); - } else { - player.pause(); + break; + case 'ArrowLeft': // Left arrow for seeking backward 5 seconds + player.currentTime(player.currentTime() - 5); event.stopPropagation(); - } - event.preventDefault(); - break; - case 'ArrowRight': // Right arrow for seeking forward 5 seconds - player.currentTime(player.currentTime() + 5); - event.stopPropagation(); - break; - case 'ArrowLeft': // Left arrow for seeking backward 5 seconds - player.currentTime(player.currentTime() - 5); - event.stopPropagation(); - break; - case 'KeyF': // F key for fullscreen - if (player.isFullscreen_) document.exitFullscreen(); - else player.requestFullscreen(); - event.stopPropagation(); - break; - case 'KeyR': // 'R' key to restart playback from the beginning - player.currentTime(0); - event.stopPropagation(); - break; - case 'KeyM': // 'M' key to toggle mute/unmute - if (player.volume() === 0) { - player.volume(1); - } else { - player.volume(0); - } - event.stopPropagation(); - break; - case 'KeyK': // 'K' key for play/pause toggle - if (player.paused()) { - player.play(); - } else { - player.pause(); - } - event.stopPropagation(); - break; - case 'KeyJ': // 'J' key for seeking backward 10 seconds multiplied by the playback rate - player.currentTime( - player.currentTime() - 10 * player.playbackRate(), - ); - event.stopPropagation(); - break; - case 'KeyL': // 'L' key for seeking forward 10 seconds multiplied by the playback rate - player.currentTime( - player.currentTime() + 10 * player.playbackRate(), - ); - event.stopPropagation(); - break; - case 'KeyC': - if (subtitles && player.textTracks().length) { - if (player.textTracks()[0].mode === 'showing') { - player.textTracks()[0].mode = 'hidden'; + break; + case 'KeyF': // F key for fullscreen + if (player.isFullscreen_) document.exitFullscreen(); + else player.requestFullscreen(); + event.stopPropagation(); + break; + case 'KeyR': // 'R' key to restart playback from the beginning + player.currentTime(0); + event.stopPropagation(); + break; + case 'KeyM': // 'M' key to toggle mute/unmute + if (player.volume() === 0) { + player.volume(1); } else { - player.textTracks()[0].mode = 'showing'; + player.volume(0); } - } - break; + event.stopPropagation(); + break; + case 'KeyK': // 'K' key for play/pause toggle + if (player.paused()) { + player.play(); + } else { + player.pause(); + } + event.stopPropagation(); + break; + case 'KeyJ': // 'J' key for seeking backward 10 seconds multiplied by the playback rate + player.currentTime( + player.currentTime() - 10 * player.playbackRate(), + ); + event.stopPropagation(); + break; + case 'KeyL': // 'L' key for seeking forward 10 seconds multiplied by the playback rate + player.currentTime( + player.currentTime() + 10 * player.playbackRate(), + ); + event.stopPropagation(); + break; + case 'KeyC': + for (let i = 0; i < tracks.length; i++) { + const track = tracks[i]; + + if (track.kind === 'subtitles' && track.language === 'en') { + if (track.mode === 'hidden') { + track.mode = 'showing'; + } else { + track.mode = 'hidden'; + } + } + } + break; } } }; diff --git a/src/components/bookmark/BookmarkView.tsx b/src/components/bookmark/BookmarkView.tsx index bed0c839d..649ca34cc 100644 --- a/src/components/bookmark/BookmarkView.tsx +++ b/src/components/bookmark/BookmarkView.tsx @@ -19,12 +19,12 @@ const BookmarkView = ({ {bookmarkData === null || 'error' in bookmarkData || !bookmarkData.length ? ( -
-
No bookmark added yet!
-
- ) : ( - - )} +
+
No bookmark added yet!
+
+ ) : ( + + )}
); diff --git a/src/components/landing/us-section/why-us-card/why-us-content.ts b/src/components/landing/us-section/why-us-card/why-us-content.ts index 96f986b7f..302b9e830 100644 --- a/src/components/landing/us-section/why-us-card/why-us-content.ts +++ b/src/components/landing/us-section/why-us-card/why-us-content.ts @@ -51,6 +51,6 @@ export const whyUs: TwhyUs = [ tagline: 'Assignments', headline: 'Learn by doing', description: - 'Harkirat personally creates assignments after every lecture, so it\'s extremely hands on.', + "Harkirat personally creates assignments after every lecture, so it's extremely hands on.", }, ]; diff --git a/src/db/course.ts b/src/db/course.ts index b9a69ace6..348ba0bf9 100644 --- a/src/db/course.ts +++ b/src/db/course.ts @@ -54,7 +54,7 @@ export async function getAllCoursesAndContentHierarchy(): Promise< contentId: number; }[]; }[] - > { +> { const value = await Cache.getInstance().get( 'getAllCoursesAndContentHierarchy', [], @@ -100,7 +100,7 @@ export async function getAllVideos(): Promise< createdAt: Date; notionMetadataId: number | null; }[] - > { +> { const value = await Cache.getInstance().get('getAllVideos', []); if (value) { return value; @@ -252,13 +252,13 @@ export const getFullCourseContent = async (courseId: number) => { videoProgress: content.type === 'video' ? { - duration: videoProgress.find((x) => x.contentId === content.id) - ?.currentTimestamp, - markAsCompleted: videoProgress.find( - (x) => x.contentId === content.id, - )?.markAsCompleted, - videoFullDuration: content.VideoMetadata?.duration, - } + duration: videoProgress.find((x) => x.contentId === content.id) + ?.currentTimestamp, + markAsCompleted: videoProgress.find( + (x) => x.contentId === content.id, + )?.markAsCompleted, + videoFullDuration: content.VideoMetadata?.duration, + } : null, }, ]), diff --git a/src/lib/utils.ts b/src/lib/utils.ts index b63b64c8a..46120fa7d 100644 --- a/src/lib/utils.ts +++ b/src/lib/utils.ts @@ -265,17 +265,17 @@ export const constructCommentPrismaQuery = ( let orderBy: Prisma.Enumerable = {}; switch (commentfilter) { - case CommentFilter.mu: - orderBy = { upvotes: 'desc' }; - break; - case CommentFilter.md: - orderBy = { downvotes: 'desc' }; - break; - case CommentFilter.mr: - orderBy = { createdAt: 'desc' }; - break; - default: - orderBy = { upvotes: 'desc' }; + case CommentFilter.mu: + orderBy = { upvotes: 'desc' }; + break; + case CommentFilter.md: + orderBy = { downvotes: 'desc' }; + break; + case CommentFilter.mr: + orderBy = { createdAt: 'desc' }; + break; + default: + orderBy = { upvotes: 'desc' }; } const where: Prisma.CommentWhereInput = {};