import { useQuery } from '@tanstack/react-query'; import { PingResponseSchema, type PingResponse } from '@sar/api-interface'; import { apiFetch } from '../api-client'; // useApiPing — prova de conectividade ponta-a-ponta API↔Web. // // O contrato é o schema Zod compartilhado (@sar/api-interface). Qualquer drift // no servidor (campo removido, tipo trocado) falha alto via .parse() ANTES de // chegar nos componentes — o erro vai pra TanStack `error` e mostramos pill 🔴. // // refetchInterval 30s = "sereno" (Visual DNA) — sem flash de loading constante. export const PING_QUERY_KEY = ['health', 'ping'] as const; export function useApiPing() { return useQuery({ queryKey: PING_QUERY_KEY, queryFn: async () => { const raw = await apiFetch('/ping'); return PingResponseSchema.parse(raw); }, refetchInterval: 30_000, refetchOnWindowFocus: false, staleTime: 25_000, }); }