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<PingResponse, Error>({
    queryKey: PING_QUERY_KEY,
    queryFn: async () => {
      const raw = await apiFetch('/ping');
      return PingResponseSchema.parse(raw);
    },
    refetchInterval: 30_000,
    refetchOnWindowFocus: false,
    staleTime: 25_000,
  });
}
