one
Version:
One is a React framework for web, iOS, and Android apps.
41 lines (38 loc) • 1.13 kB
JavaScript
import { useEffect, useState } from "react";
import { assertStateListener } from "./validate.mjs";
function currentState() {
const isConnected = typeof navigator === "undefined" ? false : navigator.onLine !== false;
return {
type: isConnected ? "unknown" : "none",
isConnected,
isInternetReachable: isConnected
};
}
async function getState() {
return currentState();
}
function addStateListener(listener) {
assertStateListener(listener);
if (typeof window === "undefined") return { remove: () => {} };
const onChange = () => listener(currentState());
window.addEventListener("online", onChange);
window.addEventListener("offline", onChange);
return { remove: () => {
window.removeEventListener("online", onChange);
window.removeEventListener("offline", onChange);
} };
}
function useNetworkState() {
const [state, setState] = useState(currentState);
useEffect(() => {
setState(currentState());
return addStateListener(setState).remove;
}, []);
return state;
}
const Network = Object.freeze({
getState,
addStateListener
});
export { Network, useNetworkState };
//# sourceMappingURL=index.mjs.map