import { ReactNode, useEffect } from 'react' import { useAuth } from '@/hooks/useAuth' import { useQueuedLocations, useUnqueueLocation } from '@/hooks/useLocation' import { useGeolocationMutation } from '@/hooks/mutations/useGeolocationMutation' import { useStartGeolocationServiceEffect } from '@/utils/geolocation' import { Platform } from 'react-native' export default function GeolocationProvider({ children }: { children: ReactNode }) { useStartGeolocationServiceEffect() const auth = useAuth() const geolocationsQueue = useQueuedLocations() const unqueueLocation = useUnqueueLocation() const geolocationMutation = useGeolocationMutation({ auth, onPostSuccess: (data) => { unqueueLocation(data) geolocationMutation.reset() }, onError: ({ response, error }) => { console.error(response, error) } }) useEffect(() => { if (geolocationsQueue.length === 0 || geolocationMutation.isPending || Platform.OS === "web") return const locToSend = geolocationsQueue[0] geolocationMutation.mutate(locToSend) }, [auth, geolocationsQueue]) return <> {children} }