41 lines
923 B
TypeScript
41 lines
923 B
TypeScript
'use client';
|
|
|
|
import { useEffect, useState } from 'react';
|
|
|
|
export function usePageVisibility(page: number) {
|
|
if (typeof document === 'undefined') {
|
|
return true;
|
|
}
|
|
|
|
const [isVisible, setIsVisible] = useState(!document.hidden);
|
|
|
|
useEffect(() => {
|
|
if (page > 1) {
|
|
return;
|
|
}
|
|
|
|
const handleVisibilityChange = () => {
|
|
setIsVisible(!document.hidden);
|
|
};
|
|
|
|
const onBlur = () => {
|
|
setIsVisible(false);
|
|
};
|
|
|
|
const onFocus = () => {
|
|
setIsVisible(true);
|
|
};
|
|
|
|
window.addEventListener('blur', onBlur);
|
|
window.addEventListener('focus', onFocus);
|
|
document.addEventListener('visibilitychange', handleVisibilityChange);
|
|
return () => {
|
|
document.removeEventListener('visibilitychange', handleVisibilityChange);
|
|
document.removeEventListener('blur', onBlur);
|
|
document.removeEventListener('focus', focus);
|
|
};
|
|
}, []);
|
|
|
|
return isVisible;
|
|
}
|