import { create } from 'zustand'; import * as Network from 'expo-network'; interface NetworkState { isOnline: boolean; setIsOnline: (status: boolean) => void; checkConnection: () => Promise; } export const useNetworkStore = create((set) => ({ isOnline: true, setIsOnline: (status: boolean) => set({ isOnline: status }), checkConnection: async () => { try { const networkState = await Network.getNetworkStateAsync(); set({ isOnline: networkState.isConnected || networkState.isInternetReachable }); } catch (error) { set({ isOnline: false }); } }, })); // Initialize network state monitoring export const initNetworkMonitoring = () => { // Initial check useNetworkStore.getState().checkConnection(); // Set up network state change listener Network.addNetworkStateListener((state) => { useNetworkStore.getState().setIsOnline( state.isConnected ?? false ); }); }; initNetworkMonitoring();