use-navigator-online
Version:
React Hooks to detect when your browser is online/offline.
39 lines (33 loc) • 1.11 kB
JavaScript
;
var react = require('react');
function useNavigatorOnline() {
const supported = typeof window !== "undefined" && typeof navigator !== "undefined" && "onLine" in navigator;
const [isOnline, setIsOnline] = react.useState({
previous: supported ? navigator.onLine : false,
current: supported ? navigator.onLine : false
});
react.useEffect(() => {
if (supported) {
const updateStatus = event => {
setIsOnline({
previous: isOnline.current,
current: event.type === "online"
});
};
window.addEventListener("offline", updateStatus);
window.addEventListener("online", updateStatus);
return () => {
window.removeEventListener("offline", updateStatus);
window.removeEventListener("online", updateStatus);
};
}
return () => {};
}, [isOnline, supported]);
return {
backOnline: !isOnline.previous && isOnline.current,
backOffline: isOnline.previous && !isOnline.current,
isOnline: isOnline.current,
isOffline: !isOnline.current
};
}
module.exports = useNavigatorOnline;