mirror of
https://github.com/Stremio/stremio-web.git
synced 2026-05-11 20:40:54 +00:00
correctly recognize fullscreen video on safari
This commit is contained in:
parent
313df06166
commit
3592d0942c
1 changed files with 11 additions and 3 deletions
|
|
@ -76,6 +76,8 @@ const FullscreenProvider = ({ children }: Props) => {
|
|||
onShortcut('fullscreen', toggleFullscreenFromShortcut, [toggleFullscreenFromShortcut]);
|
||||
|
||||
useEffect(() => {
|
||||
const videoElement = videoElementRef.current;
|
||||
|
||||
const onWindowVisibilityChanged = (state: WindowVisibility) => {
|
||||
setFullscreen(state.isFullscreen === true);
|
||||
};
|
||||
|
|
@ -84,6 +86,10 @@ const FullscreenProvider = ({ children }: Props) => {
|
|||
setFullscreen(document.fullscreenElement === document.documentElement);
|
||||
};
|
||||
|
||||
const onWebkitFullscreenChange = () => {
|
||||
setFullscreen((videoElement as any)?.webkitDisplayingFullscreen === true);
|
||||
};
|
||||
|
||||
const onKeyDown = (event: KeyboardEvent) => {
|
||||
if (event.code === 'Escape' && escExitFullscreen) {
|
||||
exitFullscreen();
|
||||
|
|
@ -97,15 +103,17 @@ const FullscreenProvider = ({ children }: Props) => {
|
|||
shell.on('win-visibility-changed', onWindowVisibilityChanged);
|
||||
document.addEventListener('keydown', onKeyDown);
|
||||
document.addEventListener('fullscreenchange', onFullscreenChange);
|
||||
videoElement?.addEventListener('webkitbeginfullscreen', onWebkitFullscreenChange);
|
||||
videoElement?.addEventListener('webkitendfullscreen', onWebkitFullscreenChange);
|
||||
|
||||
return () => {
|
||||
shell.off('win-visibility-changed', onWindowVisibilityChanged);
|
||||
document.removeEventListener('keydown', onKeyDown);
|
||||
document.removeEventListener('fullscreenchange', onFullscreenChange);
|
||||
videoElement?.removeEventListener('webkitbeginfullscreen', onWebkitFullscreenChange);
|
||||
videoElement?.removeEventListener('webkitendfullscreen', onWebkitFullscreenChange);
|
||||
};
|
||||
}, [shell, toggleFullscreen, exitFullscreen, escExitFullscreen]);
|
||||
|
||||
const supported = shell.active || document.fullscreenEnabled === true;
|
||||
}, [shell, toggleFullscreen, exitFullscreen, escExitFullscreen, hasVideoElement]);
|
||||
|
||||
const value = useMemo<FullscreenContextValue>(
|
||||
() => [fullscreen, requestFullscreen, exitFullscreen, toggleFullscreen, supported, setVideoElement],
|
||||
|
|
|
|||
Loading…
Reference in a new issue