rooks
Version:
Essential React custom hooks ⚓ to super charge your components!
52 lines (51 loc) • 1.49 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.useOnline = void 0;
var react_1 = require("react");
var noop_1 = require("../utils/noop");
/**
*
* @returns {boolean} Is navigator online
*/
function getIsOnline() {
if (typeof window === "undefined") {
return null;
}
return navigator.onLine;
}
/**
* useOnline hook
*
* Returns true if navigator is online, false if not.
*
* @returns {boolean} The value of navigator.onLine
* @see https://react-hooks.org/docs/useOnline
*/
function useOnline() {
var _a = (0, react_1.useState)(function () { return getIsOnline(); }), isOnline = _a[0], setIsOnline = _a[1];
function setOffline() {
setIsOnline(false);
}
function setOnline() {
setIsOnline(true);
}
// we only needs this to be set on mount
// hence []
(0, react_1.useEffect)(function () {
// eslint-disable-next-line no-negated-condition
if (typeof window !== "undefined") {
window.addEventListener("online", setOnline);
window.addEventListener("offline", setOffline);
return function () {
window.removeEventListener("online", setOnline);
window.removeEventListener("offline", setOffline);
};
}
else {
console.warn("useOnline: window is undefined.");
return noop_1.noop;
}
}, []);
return isOnline;
}
exports.useOnline = useOnline;