28 lines
783 B
TypeScript
28 lines
783 B
TypeScript
/**
|
|
* Copyright (c) 2023-present Plane Software, Inc. and contributors
|
|
* SPDX-License-Identifier: AGPL-3.0-only
|
|
* See the LICENSE file for details.
|
|
*/
|
|
|
|
import { useState, useEffect } from "react";
|
|
|
|
const useOnlineStatus = () => {
|
|
// states
|
|
const [isOnline, setIsOnline] = useState(typeof navigator !== "undefined" ? navigator.onLine : true);
|
|
|
|
const updateOnlineStatus = () => setIsOnline(navigator.onLine);
|
|
|
|
useEffect(() => {
|
|
window.addEventListener("online", updateOnlineStatus);
|
|
window.addEventListener("offline", updateOnlineStatus);
|
|
|
|
return () => {
|
|
window.removeEventListener("online", updateOnlineStatus);
|
|
window.removeEventListener("offline", updateOnlineStatus);
|
|
};
|
|
}, []);
|
|
|
|
return { isOnline };
|
|
};
|
|
|
|
export default useOnlineStatus;
|