// ═══════════════════════════════════════════════════════════════
// Hook de dados · Treinamentos (lista) · TanStack Query
// ═══════════════════════════════════════════════════════════════
// Escopo global (app sem bundler). Registrado no index.html apos data.jsx.
// Fonte de verdade: getTreinamentos() (LS 'escalab_treinamentos_v2' + fallback
// seed TREINAMENTOS_INICIAL) — a mesma que as 3 telas usam hoje.

// queryFn: LS-first (ver "Desvio consciente da spec" no plano). Sincrona.
// Aguarda o fetch do Supabase antes de ler. Era sincrono e LS-first: numa
// maquina sem cache local a tela montava, a query cacheava [] e nada
// invalidava depois — a lista nunca aparecia (bug do Recrutamento, 21/07).
async function resolveTreinamentos() {
  if (typeof fetchTreinamentosSupabase === 'function') { try { await fetchTreinamentosSupabase(); } catch {} }
  return (typeof getTreinamentos === 'function') ? getTreinamentos() : [];
}

function useTreinamentos() {
  const { useQuery } = ReactQuery;
  return useQuery({ queryKey: ['treinamentos'], queryFn: resolveTreinamentos, staleTime: 300_000 });
}

// Persiste a LISTA inteira (LS + dual-write Supabase, como hoje) e invalida
// o cache para TODAS as telas atualizarem. Recebe a lista completa, igual ao
// salvarTreinamentos() atual.
function useSalvarTreinamentos() {
  const { useMutation, useQueryClient } = ReactQuery;
  const qc = useQueryClient();
  return useMutation({
    mutationFn: (lista) => { salvarTreinamentos(lista); return lista; },
    onSuccess: () => qc.invalidateQueries({ queryKey: ['treinamentos'] }),
  });
}
