UNPKG

react-online-hook

Version:
37 lines (36 loc) 1.22 kB
import { useState, useEffect } from 'react'; /** * React hook to monitor network status. * * @since 1.0.0 * * @see https://github.com/Uzwername/react-online-hook#readme */ const useOnlineStatus = () => { // Check if required functionality is present const isNavigatorOnLinePresent = (typeof window.navigator.onLine === 'boolean'); const [isAssumedStatus, setIsAssumedStatus] = useState(!isNavigatorOnLinePresent); // If no navigator.onLine, assume true const [isOnline, setIsOnline] = useState(isNavigatorOnLinePresent ? window.navigator.onLine : true); useEffect(() => { const handOnline = () => { setIsAssumedStatus(false); setIsOnline(true); }; const handleOffline = () => { setIsAssumedStatus(false); setIsOnline(false); }; window.addEventListener('online', handOnline); window.addEventListener('offline', handleOffline); return () => { window.removeEventListener('online', handOnline); window.removeEventListener('offline', handleOffline); }; }, []); return { isOnline, isAssumedStatus }; }; export default useOnlineStatus;