@oieduardorabelo/use-navigator-online
Version:
React Hooks to detect when your browser is online/offline.
74 lines (59 loc) • 1.85 kB
JavaScript
;
Object.defineProperty(exports, '__esModule', { value: true });
var react = require('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 = react.useState(startOnline),
value = _useState[0],
setValue = _useState[1];
react.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
};
}
exports.useNavigatorOnline = useNavigatorOnline;
//# sourceMappingURL=use-navigator-online.cjs.development.js.map