/**
 * Content script executado apenas em /auth/extension-bridge do AssinaPro.
 * Lê o token Supabase do localStorage e envia para o service worker,
 * que persiste em chrome.storage e fecha esta aba.
 *
 * Não usa módulos ES (content_scripts não suportam import) — depende só de chrome.runtime.
 */
(function () {
  function readSupabaseSession() {
    // A chave do Supabase segue o padrão sb-<project-ref>-auth-token.
    for (let i = 0; i < localStorage.length; i++) {
      const key = localStorage.key(i);
      if (!key || !key.startsWith("sb-") || !key.endsWith("-auth-token")) continue;
      const raw = localStorage.getItem(key);
      if (!raw) continue;
      try {
        const parsed = JSON.parse(raw);
        if (parsed?.access_token) return parsed;
      } catch { /* ignore */ }
    }
    return null;
  }

  function annotate(status, message) {
    const el = document.getElementById("ap-bridge-status");
    if (!el) return;
    el.setAttribute("data-status", status);
    if (message) el.textContent = message;
  }

  function send(session) {
    chrome.runtime.sendMessage(
      { type: "AP_AUTH_TOKEN", session },
      () => {
        annotate("ok", "Extensão autorizada. Você pode fechar esta aba.");
      }
    );
  }

  // Tenta imediatamente e depois com pequenos retries — a página pode renderizar
  // antes do Supabase persistir a sessão.
  let attempts = 0;
  const tryOnce = () => {
    const session = readSupabaseSession();
    if (session) {
      annotate("sending", "Autorizando extensão…");
      send(session);
      return true;
    }
    return false;
  };

  if (!tryOnce()) {
    const iv = setInterval(() => {
      attempts += 1;
      if (tryOnce() || attempts >= 20) clearInterval(iv);
    }, 250);
  }
})();
