store/networkStore.ts
Annotation non disponible
Lance npm run annotate (nécessite ANTHROPIC_API_KEY dans .env.local) pour générer une annotation française par Claude Haiku 4.5.
1 export
useNetworkStore
Code source· typescript
import { create } from 'zustand';
import NetInfo, { type NetInfoSubscription } from '@react-native-community/netinfo';
type NetworkState = {
isOnline: boolean;
isInternetReachable: boolean | null;
connectionType: string | null;
/** Souscrit aux changements NetInfo. Retourne unsubscribe. */
init: () => () => void;
};
/**
* Source de vérité connectivité — utilise @react-native-community/netinfo.
*
* Différent de `hooks/useNetworkStatus.ts` (legacy ping HTTP /mobile/health
* toutes les 30s) qui détecte aussi les coupures DNS/proxy captif mais coûte
* un round-trip réseau. NetInfo donne l'info instantanée du système.
*
* V1 : on garde les deux. Le store ici est consommé par OfflineBanner + queue
* sync ; le hook useNetworkStatus reste pour l'ancien banner (en attendant
* migration complète).
*/
export const useNetworkStore = create<NetworkState>((set) => ({
isOnline: true,
isInternetReachable: null,
connectionType: null,
init: () => {
const unsub: NetInfoSubscription = NetInfo.addEventListener((state) => {
set({
isOnline: state.isConnected ?? false,
isInternetReachable: state.isInternetReachable,
connectionType: state.type,
});
});
return unsub;
},
}));
import { create } from 'zustand';
import NetInfo, { type NetInfoSubscription } from '@react-native-community/netinfo';
type NetworkState = {
isOnline: boolean;
isInternetReachable: boolean | null;
connectionType: string | null;
/** Souscrit aux changements NetInfo. Retourne unsubscribe. */
init: () => () => void;
};
/**
* Source de vérité connectivité — utilise @react-native-community/netinfo.
*
* Différent de `hooks/useNetworkStatus.ts` (legacy ping HTTP /mobile/health
* toutes les 30s) qui détecte aussi les coupures DNS/proxy captif mais coûte
* un round-trip réseau. NetInfo donne l'info instantanée du système.
*
* V1 : on garde les deux. Le store ici est consommé par OfflineBanner + queue
* sync ; le hook useNetworkStatus reste pour l'ancien banner (en attendant
* migration complète).
*/
export const useNetworkStore = create<NetworkState>((set) => ({
isOnline: true,
isInternetReachable: null,
connectionType: null,
init: () => {
const unsub: NetInfoSubscription = NetInfo.addEventListener((state) => {
set({
isOnline: state.isConnected ?? false,
isInternetReachable: state.isInternetReachable,
connectionType: state.type,
});
});
return unsub;
},
}));