fix: prevent typerror on fullscreen request (#461)

This commit is contained in:
Carlos Valente
2023-07-21 23:12:15 +02:00
committed by GitHub
parent e3444747bb
commit bee7a8dcb4
2 changed files with 15 additions and 10 deletions
-1
View File
@@ -6,7 +6,6 @@
<meta name='viewport' content='width=device-width, initial-scale=1' />
<meta name='theme-color' content='#121212' />
<meta name='ontime' content='ontime - event timer manager' />
<meta http-equiv="Content-Security-Policy" content="fullscreen 'self';">
<link rel='apple-touch-icon' href='/logo192.png' />
<link
rel='icon'
+15 -9
View File
@@ -34,24 +34,30 @@ export default function useFullscreen() {
const toggleFullScreen = useCallback(() => {
if (!document.fullscreenElement && !(document as WebkitDocument).webkitIsFullScreen) {
// Fullscreen mode is not active, so we can enter fullscreen mode
if (document.documentElement.requestFullscreen) {
const element = document.documentElement;
if (element.requestFullscreen) {
// Standard fullscreen API is supported
document.documentElement.requestFullscreen();
// @ts-expect-error -- the whole casting dance is not worth it
} else if (document.documentElement.webkitRequestFullscreen) {
element.requestFullscreen().catch(() => {
/* nothing to do */
});
} else if (element.webkitRequestFullscreen) {
// iOS Safari fullscreen API is supported
// @ts-expect-error -- we know this is not undefined now
(document.documentElement as WebkitDocument).webkitRequestFullscreen();
element.webkitRequestFullscreen().catch(() => {
/* nothing to do */
});
}
} else {
// Fullscreen mode is active, so we can exit fullscreen mode
if (document.exitFullscreen) {
// Standard fullscreen API is supported
document.exitFullscreen();
document.exitFullscreen().catch((error) => {
console.error('Error while trying to exit fullscreen:', error);
});
} else if ((document as WebkitDocument).webkitExitFullscreen) {
// iOS Safari fullscreen API is supported
// @ts-expect-error -- we know this is not undefined now
(document as WebkitDocument).webkitExitFullscreen();
(document as WebkitDocument).webkitExitFullscreen().catch(() => {
/* nothing to do */
});
}
}
}, []);