UNPKG

ahooks

Version:
22 lines (21 loc) • 677 B
// from swr import isBrowser from '../../../utils/isBrowser'; import isDocumentVisible from './isDocumentVisible'; import isOnline from './isOnline'; const listeners = new Set(); function subscribe(listener) { listeners.add(listener); return function unsubscribe() { listeners.has(listener) && listeners.delete(listener); }; } if (isBrowser) { const revalidate = () => { if (!isDocumentVisible() || !isOnline()) return; listeners.forEach((listener) => listener()); }; window.addEventListener('visibilitychange', revalidate, false); window.addEventListener('focus', revalidate, false); } export default subscribe;