mirror of
https://github.com/Stremio/stremio-web.git
synced 2026-08-08 20:17:31 +00:00
feature: seek and seek shift skip
This commit is contained in:
parent
e9a2227724
commit
e207294a4f
4 changed files with 9 additions and 11 deletions
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
|
|
|
|||
|
|
@ -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')}`
|
||||
})),
|
||||
|
|
|
|||
2
src/types/models/Ctx.d.ts
vendored
2
src/types/models/Ctx.d.ts
vendored
|
|
@ -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,
|
||||
|
|
|
|||
Loading…
Reference in a new issue