UNPKG

@modern-kit/react

Version:
44 lines (41 loc) 1.22 kB
import { noop } from '@modern-kit/utils'; import { usePreservedCallback } from '../usePreservedCallback/index.mjs'; import { useSyncExternalStore } from 'react'; const getSnapshot = () => { return navigator.onLine; }; const getServerSnapshot = () => { return true; }; const subscribe = (onStoreChange, onlineAction, offlineAction) => { const handleOnlineCallback = (event) => { onlineAction(event); return onStoreChange(); }; const handleOfflineCallback = (event) => { offlineAction(event); return onStoreChange(); }; window.addEventListener("online", handleOnlineCallback); window.addEventListener("offline", handleOfflineCallback); return () => { window.removeEventListener("online", handleOnlineCallback); window.removeEventListener("offline", handleOfflineCallback); }; }; function useNetwork({ onlineAction = noop, offlineAction = noop } = {}) { const preservedSubscribe = usePreservedCallback( (onStoreChange) => subscribe(onStoreChange, onlineAction, offlineAction) ); const isOnline = useSyncExternalStore( preservedSubscribe, getSnapshot, getServerSnapshot ); return isOnline; } export { useNetwork }; //# sourceMappingURL=index.mjs.map