ge-tool/hooks/use-tab-visibility.ts

23 lines
793 B
TypeScript
Raw Normal View History

2025-12-10 06:41:43 +00:00
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 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;
}