import { useEffect, useState } from 'react'; import { NetworkDetector } from '../core/NetworkDetector'; import { NetworkStatus } from '../types'; /** * Hook to monitor network status * * @example * ```typescript * const { isOnline, isConnected, type } = useNetworkStatus(networkDetector); * * if (!isOnline) { * return ; * } * ``` */ export function useNetworkStatus(networkDetector: NetworkDetector) { const [status, setStatus] = useState(networkDetector.getStatus()); useEffect(() => { const unsubscribe = networkDetector.addListener((newStatus) => { setStatus(newStatus); }); // Get initial status setStatus(networkDetector.getStatus()); return unsubscribe; }, [networkDetector]); return { isOnline: networkDetector.isOnline(), isConnected: status.isConnected, isInternetReachable: status.isInternetReachable, type: status.type, }; }