UNPKG

@oieduardorabelo/use-navigator-online

Version:

React Hooks to detect when your browser is online/offline.

70 lines (57 loc) 1.75 kB
import { useState, useEffect } from 'react'; function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } var defaultState = { whenOnline: 'online', whenOffline: 'offline', startOnline: true }; function useNavigatorOnline(state) { if (state === void 0) { state = {}; } var _defaultState$state = _extends({}, defaultState, state), whenOnline = _defaultState$state.whenOnline, whenOffline = _defaultState$state.whenOffline, startOnline = _defaultState$state.startOnline; var _useState = useState(startOnline), value = _useState[0], setValue = _useState[1]; useEffect(function () { if (window.navigator.onLine !== value) { setValue(window.navigator.onLine); return; } function handleOnlineStatus() { setValue(window.navigator.onLine); } window.addEventListener('online', handleOnlineStatus); window.addEventListener('offline', handleOnlineStatus); return function () { window.removeEventListener('online', handleOnlineStatus); window.removeEventListener('offline', handleOnlineStatus); }; }, [value, setValue]); var isOnline = value === true; var isOffline = value === false; var status = isOnline ? whenOnline : whenOffline; return { status: status, isOnline: isOnline, isOffline: isOffline }; } export { useNavigatorOnline }; //# sourceMappingURL=use-navigator-online.esm.js.map