ai-generated junk tool for migrating atproto identities in-browser
1import { createContext, useContext, useState, useEffect, ReactNode } from 'react';
2
3interface NetworkContextType {
4 isOnline: boolean;
5}
6
7const NetworkContext = createContext<NetworkContextType | undefined>(undefined);
8
9export function NetworkProvider({ children }: { children: ReactNode }) {
10 const [isOnline, setIsOnline] = useState(navigator.onLine);
11
12 useEffect(() => {
13 const handleOnline = () => setIsOnline(true);
14 const handleOffline = () => setIsOnline(false);
15
16 window.addEventListener('online', handleOnline);
17 window.addEventListener('offline', handleOffline);
18
19 return () => {
20 window.removeEventListener('online', handleOnline);
21 window.removeEventListener('offline', handleOffline);
22 };
23 }, []);
24
25 return (
26 <NetworkContext.Provider value={{ isOnline }}>
27 {children}
28 </NetworkContext.Provider>
29 );
30}
31
32export function useNetwork() {
33 const context = useContext(NetworkContext);
34 if (context === undefined) {
35 throw new Error('useNetwork must be used within a NetworkProvider');
36 }
37 return context;
38}