feature: seek and seek shift skip

This commit is contained in:
kKaskak 2023-10-31 22:29:29 +02:00
parent e9a2227724
commit e207294a4f
4 changed files with 9 additions and 11 deletions

View file

@ -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,

View file

@ -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();

View file

@ -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')}`
})),

View file

@ -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,