'use client' import { useQuery } from '@tanstack/react-query' import { getCurrentWeather, getForecast, getHistorical, getTfrs } from '@/lib/api' import type { CurrentWeatherResponse, ForecastResponse, HistoricalResponse, TFRResponse } from '@/lib/types' const STALE_TIME = 5 * 60 * 1000 // 5 minutes const REFETCH_INTERVAL = 5 * 60 * 1000 // 5 minutes export function useCurrentWeather(lat?: number, lon?: number) { return useQuery({ queryKey: ['weather', 'current', lat, lon], queryFn: () => getCurrentWeather(lat, lon), staleTime: STALE_TIME, refetchInterval: REFETCH_INTERVAL, refetchOnWindowFocus: true, }) } export function useForecast(lat?: number, lon?: number) { return useQuery({ queryKey: ['weather', 'forecast', lat, lon], queryFn: () => getForecast(lat, lon), staleTime: STALE_TIME, refetchInterval: REFETCH_INTERVAL, refetchOnWindowFocus: true, }) } export function useHistorical(date: string, lat?: number, lon?: number) { return useQuery({ queryKey: ['weather', 'historical', date, lat, lon], queryFn: () => getHistorical(date, lat, lon), staleTime: STALE_TIME, enabled: !!date, }) } const TFR_STALE_TIME = 30 * 60 * 1000 // 30 minutes const TFR_REFETCH_INTERVAL = 30 * 60 * 1000 // 30 minutes export function useTfrs() { return useQuery({ queryKey: ['airspace', 'tfrs'], queryFn: () => getTfrs(), staleTime: TFR_STALE_TIME, refetchInterval: TFR_REFETCH_INTERVAL, }) }