// ═══════════════════════════════════════════════════════════════
// Hook de dados · Avaliações (AVD) · TanStack Query
// ═══════════════════════════════════════════════════════════════
// Escopo global (app sem bundler). Registrado no index.html apos data.jsx.
// Fonte: array global AVALIACOES — hidratado no login por
// fetchAvaliacoesSupabase e sincronizado in-memory por
// salvarAvaliacaoSupabase (ambos invalidam ['avaliacoes']).
// Telas assinam com useAvaliacoes() no componente raiz: a invalidacao gera
// um snapshot novo ([...AVALIACOES]) e o re-render faz os helpers
// (getNotaColab, getAvaliacoesColaborador, getMediaSetor) lerem o global
// ja atualizado — sem F5 e sem mexer nos calculos existentes.

// 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 resolveAvaliacoes() {
  if (typeof fetchAvaliacoesSupabase === 'function') { try { await fetchAvaliacoesSupabase(); } catch {} }
  return (typeof AVALIACOES !== 'undefined' && Array.isArray(AVALIACOES)) ? [...AVALIACOES] : [];
}

function useAvaliacoes() {
  const { useQuery } = ReactQuery;
  return useQuery({ queryKey: ['avaliacoes'], queryFn: resolveAvaliacoes, staleTime: 300_000 });
}
