mirror of
https://github.com/Qortal/qortal-mobile.git
synced 2025-03-28 08:15:55 +00:00
68 lines
2.7 KiB
TypeScript
68 lines
2.7 KiB
TypeScript
import { useCallback, useEffect } from 'react';
|
|
import { isMobile } from './App';
|
|
|
|
export const useAppFullScreen = (setFullScreen) => {
|
|
const enterFullScreen = useCallback(() => {
|
|
const element = document.documentElement; // Target the entire HTML document
|
|
if (element.requestFullscreen) {
|
|
element.requestFullscreen();
|
|
} else if (element.mozRequestFullScreen) { // Firefox
|
|
element.mozRequestFullScreen();
|
|
} else if (element.webkitRequestFullscreen) { // Chrome, Safari and Opera
|
|
element.webkitRequestFullscreen();
|
|
} else if (element.msRequestFullscreen) { // IE/Edge
|
|
element.msRequestFullscreen();
|
|
}
|
|
}, []);
|
|
|
|
const exitFullScreen = useCallback(() => {
|
|
if (document.fullscreenElement) {
|
|
document.exitFullscreen();
|
|
} else if (document.mozFullScreenElement) {
|
|
document.mozCancelFullScreen();
|
|
} else if (document.webkitFullscreenElement) {
|
|
document.webkitExitFullscreen();
|
|
} else if (document.msFullscreenElement) {
|
|
document.msExitFullscreen();
|
|
}
|
|
}, []);
|
|
|
|
const toggleFullScreen = useCallback(() => {
|
|
if(!isMobile) return
|
|
if (document.fullscreenElement || document.mozFullScreenElement || document.webkitFullscreenElement || document.msFullscreenElement) {
|
|
exitFullScreen();
|
|
setFullScreen(false)
|
|
} else {
|
|
enterFullScreen();
|
|
setFullScreen(true)
|
|
}
|
|
}, [enterFullScreen, exitFullScreen]);
|
|
|
|
// Listen for changes to fullscreen state
|
|
useEffect(() => {
|
|
const handleFullScreenChange = () => {
|
|
if (document.fullscreenElement || document.mozFullScreenElement || document.webkitFullscreenElement || document.msFullscreenElement) {
|
|
|
|
} else {
|
|
setFullScreen(false);
|
|
}
|
|
};
|
|
|
|
document.addEventListener('fullscreenchange', handleFullScreenChange);
|
|
document.addEventListener('webkitfullscreenchange', handleFullScreenChange); // Safari
|
|
document.addEventListener('mozfullscreenchange', handleFullScreenChange); // Firefox
|
|
document.addEventListener('MSFullscreenChange', handleFullScreenChange); // IE/Edge
|
|
|
|
return () => {
|
|
document.removeEventListener('fullscreenchange', handleFullScreenChange);
|
|
document.removeEventListener('webkitfullscreenchange', handleFullScreenChange);
|
|
document.removeEventListener('mozfullscreenchange', handleFullScreenChange);
|
|
document.removeEventListener('MSFullscreenChange', handleFullScreenChange);
|
|
};
|
|
}, []);
|
|
|
|
return { enterFullScreen, exitFullScreen, toggleFullScreen };
|
|
};
|
|
|
|
|