entregas_app/hooks/useNetworkStatus.ts

43 lines
1.2 KiB
TypeScript
Raw Permalink Normal View History

"use client"
import { useState, useEffect, useRef } from "react"
import NetInfo from "@react-native-community/netinfo"
export const useNetworkStatus = () => {
const [isConnected, setIsConnected] = useState(true)
const [wasConnected, setWasConnected] = useState(true)
const prevConnectedRef = useRef(true)
useEffect(() => {
// Verificar estado inicial da rede
NetInfo.fetch().then((state) => {
const connected = state.isConnected !== null ? state.isConnected : false
setIsConnected(connected)
setWasConnected(connected)
prevConnectedRef.current = connected
})
// Inscrever-se para atualizações de estado da rede
const unsubscribe = NetInfo.addEventListener((state) => {
const currentlyConnected = state.isConnected !== null ? state.isConnected : false
// Atualizar estado anterior
setWasConnected(prevConnectedRef.current)
setIsConnected(currentlyConnected)
prevConnectedRef.current = currentlyConnected
})
return () => unsubscribe()
}, [])
// Retorna se acabou de ficar offline (estava conectado e agora não está)
const justWentOffline = wasConnected && !isConnected
return {
isConnected,
wasConnected,
justWentOffline,
}
}