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; }