react-online-hook
Version:
React hook to monitor network status.
56 lines (44 loc) • 1.37 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var react_1 = require("react");
/**
* React hook to monitor network status.
*
* @since 1.0.0
*
* @see https://github.com/Uzwername/react-online-hook#readme
*/
var useOnlineStatus = function () {
// Check if required functionality is present
var isNavigatorOnLinePresent = typeof window.navigator.onLine === 'boolean';
var _a = react_1.useState(!isNavigatorOnLinePresent),
isAssumedStatus = _a[0],
setIsAssumedStatus = _a[1]; // If no navigator.onLine, assume true
var _b = react_1.useState(isNavigatorOnLinePresent ? window.navigator.onLine : true),
isOnline = _b[0],
setIsOnline = _b[1];
react_1.useEffect(function () {
var handOnline = function () {
setIsAssumedStatus(false);
setIsOnline(true);
};
var handleOffline = function () {
setIsAssumedStatus(false);
setIsOnline(false);
};
window.addEventListener('online', handOnline);
window.addEventListener('offline', handleOffline);
return function () {
window.removeEventListener('online', handOnline);
window.removeEventListener('offline', handleOffline);
};
}, []);
return {
isOnline: isOnline,
isAssumedStatus: isAssumedStatus
};
};
exports.default = useOnlineStatus;
module.exports = exports.default;