From e207294a4fd03a61e568259a353ece18fc329709 Mon Sep 17 00:00:00 2001 From: kKaskak <117831817+kKaskak@users.noreply.github.com> Date: Tue, 31 Oct 2023 22:29:29 +0200 Subject: [PATCH] feature: seek and seek shift skip --- src/common/CONSTANTS.js | 4 +--- src/routes/Player/Player.js | 10 +++++----- src/routes/Settings/useProfileSettingsInputs.js | 4 ++-- src/types/models/Ctx.d.ts | 2 +- 4 files changed, 9 insertions(+), 11 deletions(-) diff --git a/src/common/CONSTANTS.js b/src/common/CONSTANTS.js index 326857476..4cc5a474f 100644 --- a/src/common/CONSTANTS.js +++ b/src/common/CONSTANTS.js @@ -3,8 +3,7 @@ const CHROMECAST_RECEIVER_APP_ID = '1634F54B'; const SUBTITLES_SIZES = [75, 100, 125, 150, 175, 200, 250]; const SUBTITLES_FONTS = ['PlusJakartaSans', 'Arial', 'Halvetica', 'Times New Roman', 'Verdana', 'Courier', 'Lucida Console', 'sans-serif', 'serif', 'monospace']; -const SEEK_TIME_DURATIONS = [5000, 10000, 15000, 20000, 25000, 30000]; -const SEEK_SHORT_TIME_DURATIONS = [5000, 10000, 15000, 20000, 25000, 30000]; +const SEEK_TIME_DURATIONS = [3000, 5000, 10000, 15000, 20000, 30000]; const NEXT_VIDEO_POPUP_DURATIONS = [0, 5000, 10000, 15000, 20000, 25000, 30000, 35000, 40000, 45000, 50000, 55000, 60000, 65000, 70000, 75000, 80000, 85000, 90000]; const CATALOG_PREVIEW_SIZE = 10; const CATALOG_PAGE_SIZE = 100; @@ -46,7 +45,6 @@ module.exports = { SUBTITLES_SIZES, SUBTITLES_FONTS, SEEK_TIME_DURATIONS, - SEEK_SHORT_TIME_DURATIONS, NEXT_VIDEO_POPUP_DURATIONS, CATALOG_PREVIEW_SIZE, CATALOG_PAGE_SIZE, diff --git a/src/routes/Player/Player.js b/src/routes/Player/Player.js index fe574970a..da2abda40 100644 --- a/src/routes/Player/Player.js +++ b/src/routes/Player/Player.js @@ -487,16 +487,16 @@ const Player = ({ urlParams, queryParams }) => { } case 'ArrowRight': { if (!subtitlesMenuOpen && !infoMenuOpen && !videosMenuOpen && !speedMenuOpen && !optionsMenuOpen && !statisticsMenuOpen && videoState.time !== null) { - const seekTimeMultiplier = event.shiftKey ? 3 : 1; - onSeekRequested(videoState.time + (settings.seekTimeDuration * seekTimeMultiplier)); + const seekDuration = event.shiftKey ? settings.seekShortTimeDuration : settings.seekTimeDuration; + onSeekRequested(videoState.time + seekDuration); } break; } case 'ArrowLeft': { if (!subtitlesMenuOpen && !infoMenuOpen && !videosMenuOpen && !speedMenuOpen && !optionsMenuOpen && !statisticsMenuOpen && videoState.time !== null) { - const seekTimeMultiplier = event.shiftKey ? 3 : 1; - onSeekRequested(videoState.time - (settings.seekTimeDuration * seekTimeMultiplier)); + const seekDuration = event.shiftKey ? settings.seekShortTimeDuration : settings.seekTimeDuration; + onSeekRequested(videoState.time - seekDuration); } break; @@ -608,7 +608,7 @@ const Player = ({ urlParams, queryParams }) => { window.removeEventListener('keydown', onKeyDown); window.removeEventListener('wheel', onWheel); }; - }, [player.metaItem, player.selected, streamingServer.statistics, settings.seekTimeDuration, routeFocused, subtitlesMenuOpen, infoMenuOpen, videosMenuOpen, speedMenuOpen, optionsMenuOpen, statisticsMenuOpen, videoState.paused, videoState.time, videoState.volume, videoState.audioTracks, videoState.subtitlesTracks, videoState.extraSubtitlesTracks, videoState.playbackSpeed, toggleSubtitlesMenu, toggleInfoMenu, toggleVideosMenu, toggleStatisticsMenu]); + }, [player.metaItem, player.selected, streamingServer.statistics, settings.seekTimeDuration, settings.seekShortTimeDuration, routeFocused, subtitlesMenuOpen, infoMenuOpen, videosMenuOpen, speedMenuOpen, optionsMenuOpen, statisticsMenuOpen, videoState.paused, videoState.time, videoState.volume, videoState.audioTracks, videoState.subtitlesTracks, videoState.extraSubtitlesTracks, videoState.playbackSpeed, toggleSubtitlesMenu, toggleInfoMenu, toggleVideosMenu, toggleStatisticsMenu]); React.useLayoutEffect(() => { return () => { setImmersedDebounced.cancel(); diff --git a/src/routes/Settings/useProfileSettingsInputs.js b/src/routes/Settings/useProfileSettingsInputs.js index 3e28b82f6..4ad10923d 100644 --- a/src/routes/Settings/useProfileSettingsInputs.js +++ b/src/routes/Settings/useProfileSettingsInputs.js @@ -143,7 +143,7 @@ const useProfileSettingsInputs = (profile) => { args: { action: 'UpdateSettings', args: { - escExistFullscreen: !profile.settings.escExitFullscreen + escExitFullscreen: !profile.settings.escExitFullscreen } } }); @@ -173,7 +173,7 @@ const useProfileSettingsInputs = (profile) => { } }), [profile.settings]); const seekShortTimeDurationSelect = React.useMemo(() => ({ - options: CONSTANTS.SEEK_SHORT_TIME_DURATIONS.map((size) => ({ + options: CONSTANTS.SEEK_TIME_DURATIONS.map((size) => ({ value: `${size}`, label: `${size / 1000} ${t('SECONDS')}` })), diff --git a/src/types/models/Ctx.d.ts b/src/types/models/Ctx.d.ts index 8f39eb0e3..54ee1dc4e 100644 --- a/src/types/models/Ctx.d.ts +++ b/src/types/models/Ctx.d.ts @@ -18,6 +18,7 @@ type Settings = { autoFrameRateMatching: boolean, bingeWatching: boolean, hardwareDecoding: boolean, + escExitFullscreen: boolean, interfaceLanguage: string, nextVideoNotificationDuration: number, playInBackground: boolean, @@ -25,7 +26,6 @@ type Settings = { secondaryAudioLanguage: string | null, secondarySubtitlesLanguage: string | null, seekTimeDuration: number, - escExitFullscreen: boolean, seekShortTimeDuration: number, streamingServerUrl: string, streamingServerWarningDismissed: Date | null,