26 lines
654 B
TypeScript
26 lines
654 B
TypeScript
import { useState, useEffect } from 'react';
|
|
|
|
export function useOnlineStatus() {
|
|
const [isOnline, setIsOnline] = useState(true);
|
|
|
|
useEffect(() => {
|
|
// Check initial status
|
|
if (typeof window !== 'undefined') {
|
|
setIsOnline(navigator.onLine);
|
|
}
|
|
|
|
const handleOnline = () => setIsOnline(true);
|
|
const handleOffline = () => setIsOnline(false);
|
|
|
|
window.addEventListener('online', handleOnline);
|
|
window.addEventListener('offline', handleOffline);
|
|
|
|
return () => {
|
|
window.removeEventListener('online', handleOnline);
|
|
window.removeEventListener('offline', handleOffline);
|
|
};
|
|
}, []);
|
|
|
|
return isOnline;
|
|
}
|