ge-tool/hooks/use-tab-visibility.ts
2025-12-10 13:41:43 +07:00

23 lines
793 B
TypeScript
Executable File

import { useEffect, useRef } from 'react';
/**
* Hook để track visibility của browser tab
* Trả về ref chứa trạng thái visible hiện tại
*
* Sử dụng để pause polling khi tab ẩn, giảm tải cho server và CPU
*/
export function useTabVisibility() {
const isVisibleRef = useRef(!document.hidden);
useEffect(() => {
const handleVisibilityChange = () => {
isVisibleRef.current = !document.hidden;
console.log('[TabVisibility]', document.hidden ? 'Tab hidden - pausing polls' : 'Tab visible - resuming polls');
};
document.addEventListener('visibilitychange', handleVisibilityChange);
return () => document.removeEventListener('visibilitychange', handleVisibilityChange);
}, []);
return isVisibleRef;
}