// supabase-client.jsx — Cliente Supabase global.
// Inicializado una sola vez y expuesto como window.sb para todos los módulos.

(() => {
  const cfg = window.APP_CONFIG || {};
  if (!cfg.SUPABASE_URL || !cfg.SUPABASE_ANON_KEY || cfg.SUPABASE_ANON_KEY === 'PEGAR_AQUI_LA_ANON_KEY') {
    console.error('[supabase-client] Falta configurar SUPABASE_URL/ANON_KEY en config.js');
    return;
  }
  if (!window.supabase) {
    console.error('[supabase-client] El SDK @supabase/supabase-js no está cargado');
    return;
  }
  window.sb = window.supabase.createClient(cfg.SUPABASE_URL, cfg.SUPABASE_ANON_KEY, {
    auth: {
      persistSession: true,        // guarda la sesión en localStorage
      autoRefreshToken: true,      // refresca el JWT antes de expirar
      detectSessionInUrl: true,    // útil para magic links / OAuth callbacks
    },
  });

  // Si el SDK detecta que la sesión murió (logout server-side, refresh failed),
  // limpiar el localStorage para que el próximo intento mande al landing.
  window.sb.auth.onAuthStateChange((event) => {
    if (event === 'SIGNED_OUT' || event === 'TOKEN_REFRESHED' || event === 'INITIAL_SESSION') return;
    if (event === 'SIGNED_IN') return;
    // 'USER_UPDATED', etc. — no hace falta hacer nada
  });

  // Limpiar tokens stale al detectar 401/403 con error de sesión inexistente
  window.addEventListener('storage', () => { /* no-op por ahora */ });
})();
