// SGL · Cliente Correios (frontend)
// Chama a Edge Function `correios-track`. As credenciais dos Correios ficam só nos
// Secrets do Supabase — nunca trafegam pelo navegador.

async function callCorreios(action, payload = {}) {
  if (!window.supa) {
    return { ok: false, error: 'Supabase não inicializado.' };
  }
  const { data: { session } } = await window.supa.auth.getSession();
  if (!session) {
    return { ok: false, error: 'Você precisa estar logado para usar este recurso.' };
  }
  try {
    const { data, error } = await window.supa.functions.invoke('correios-track', { body: { action, ...payload } });
    if (error) {
      let serverMsg = null;
      try {
        if (error.context && typeof error.context.json === 'function') {
          const body = await error.context.json();
          serverMsg = body && (body.error || body.detalhe);
        }
      } catch { /* corpo não-JSON */ }
      if (error.name === 'FunctionsFetchError') {
        return { ok: false, error: 'Não foi possível contatar o servidor. A função "correios-track" foi publicada?' };
      }
      return { ok: false, error: serverMsg || error.message || 'Falha ao chamar correios-track.' };
    }
    return data || { ok: false, error: 'Resposta vazia do servidor.' };
  } catch (e) {
    return { ok: false, error: (e && e.message) || 'Erro inesperado ao contatar os Correios.' };
  }
}

/** Testa as credenciais dos Correios (autentica e devolve a validade do token). */
async function testCorreios() {
  return callCorreios('test');
}

/** Consulta o rastreio das postagens em trânsito e atualiza os eventos. */
async function atualizarRastreios() {
  return callCorreios('track');
}

window.callCorreios = callCorreios;
window.testCorreios = testCorreios;
window.atualizarRastreios = atualizarRastreios;
