"use client"; import { useQuery } from "@tanstack/react-query"; import type { WifiAccessPoint } from "@/lib/shared/contracts/network"; import { queryKeys } from "@/lib/shared/query-keys"; type WifiNetworksResponse = { data: WifiAccessPoint[]; meta?: { source?: "helper" | "fallback"; count?: number; }; }; async function fetchWifiNetworks() { const response = await fetch("/api/v1/network/networks", { cache: "no-store", }); if (!response.ok) { throw new Error(`Failed to fetch Wi-Fi networks (${response.status})`); } const json = (await response.json()) as WifiNetworksResponse; return json.data; } export function useWifiNetworks() { return useQuery({ queryKey: queryKeys.networkNetworks, queryFn: fetchWifiNetworks, refetchInterval: (query) => { if (query.state.status !== "error") { return 120_000; } const failureCount = Math.max(1, query.state.fetchFailureCount); const exponentialBackoffMs = 60_000 * 2 ** Math.min(failureCount - 1, 2); return Math.min(exponentialBackoffMs, 300_000); }, staleTime: 10_000, retry: 0, refetchOnWindowFocus: false, }); }