mirror of
https://github.com/Stremio/stremio-web.git
synced 2026-04-20 02:22:09 +00:00
refactor: subtitle offset logic
This commit is contained in:
parent
abe42467ad
commit
f86272a123
1 changed files with 16 additions and 7 deletions
|
|
@ -46,6 +46,8 @@ const Player = ({ urlParams, queryParams }) => {
|
|||
});
|
||||
|
||||
const [immersed, setImmersed] = React.useState(true);
|
||||
const [userOffset, setUserOffset] = React.useState(video.state.subtitlesOffset);
|
||||
const [offsetUpdatedNotImmersed, setOffsetUpdatedNotImmersed] = React.useState(false);
|
||||
const setImmersedDebounced = React.useCallback(debounce(setImmersed, 3000), []);
|
||||
const [, , , toggleFullscreen] = useFullscreen();
|
||||
|
||||
|
|
@ -189,7 +191,11 @@ const Player = ({ urlParams, queryParams }) => {
|
|||
}, [updateSettings]);
|
||||
|
||||
const onSubtitlesOffsetChanged = React.useCallback((offset) => {
|
||||
setUserOffset(offset);
|
||||
updateSettings({ subtitlesOffset: offset });
|
||||
if (!immersed) {
|
||||
setOffsetUpdatedNotImmersed(true);
|
||||
}
|
||||
}, [updateSettings]);
|
||||
|
||||
const onDismissNextVideoPopup = React.useCallback(() => {
|
||||
|
|
@ -462,16 +468,19 @@ const Player = ({ urlParams, queryParams }) => {
|
|||
}, []);
|
||||
|
||||
React.useEffect(() => {
|
||||
let controlBarLayerHeight = Math.round((controlBarRef?.current?.offsetHeight / window?.innerHeight) * 100);
|
||||
const controlBarLayerHeight = Math.round((controlBarRef?.current?.offsetHeight / window?.innerHeight) * 100);
|
||||
|
||||
if(video.state.subtitlesOffset < controlBarLayerHeight / 2) {
|
||||
if (immersed) controlBarLayerHeight = 0;
|
||||
updateSettings({ subtitlesOffset: video.state.subtitlesOffset + controlBarLayerHeight });
|
||||
if (!immersed) {
|
||||
if (!offsetUpdatedNotImmersed) {
|
||||
if (video.state.subtitlesOffset < controlBarLayerHeight) {
|
||||
updateSettings({ subtitlesOffset: controlBarLayerHeight });
|
||||
}
|
||||
}
|
||||
} else {
|
||||
controlBarLayerHeight = Math.round((controlBarRef?.current?.offsetHeight / window?.innerHeight) * 100);
|
||||
updateSettings({ subtitlesOffset: video.state.subtitlesOffset - controlBarLayerHeight });
|
||||
updateSettings({ subtitlesOffset: userOffset });
|
||||
setOffsetUpdatedNotImmersed(false);
|
||||
}
|
||||
}, [immersed]);
|
||||
}, [immersed, video.state.subtitlesOffset]);
|
||||
|
||||
React.useLayoutEffect(() => {
|
||||
const onKeyDown = (event) => {
|
||||
|
|
|
|||
Loading…
Reference in a new issue