// ========== Supabase client init ==========
// Se carga al inicio (antes que app.jsx). Lee /api/config para obtener
// supabaseUrl + supabaseAnonKey y crea window.holai.supabase para que
// auth.jsx, admin.jsx y los demás módulos lo usen.
//
// Si la config no está disponible (Supabase no configurado en Vercel
// env vars), expone window.holai.supabase = null y un flag .ready = false
// para que la UI muestre un estado vacío en vez de crashear.

(function initSupabase() {
  window.holai = window.holai || {};
  window.holai.supabase = null;
  window.holai.ready = false;
  window.holai.user = null;
  window.holai.config = null;

  // El SDK de Supabase vino del CDN antes que este script.
  // (Ver index.html — <script src="https://cdn.jsdelivr.net/npm/@supabase/supabase-js@2/dist/umd/supabase.min.js">)
  const SupabaseGlobal = window.supabase;

  // Promesa que el resto de la app espera antes de usar window.holai.supabase
  window.holai.initPromise = (async () => {
    try {
      const r = await fetch('/api/config', { cache: 'no-store' });
      const cfg = await r.json();
      window.holai.config = cfg;

      if (!cfg.configured || !SupabaseGlobal) {
        console.warn('[holai] Supabase no configurado o SDK no disponible.');
        return;
      }

      window.holai.supabase = SupabaseGlobal.createClient(cfg.supabaseUrl, cfg.supabaseAnonKey, {
        auth: {
          persistSession:   true,
          autoRefreshToken: true,
          detectSessionInUrl: false,
        },
      });

      // Hidratar user inicial desde la sesión persistida
      const { data: { session } } = await window.holai.supabase.auth.getSession();
      if (session && session.user) window.holai.user = session.user;

      // Mantener window.holai.user sincronizado y disparar evento global
      window.holai.supabase.auth.onAuthStateChange((_event, sess) => {
        window.holai.user = sess && sess.user ? sess.user : null;
        window.dispatchEvent(new CustomEvent('holai:auth', { detail: { user: window.holai.user } }));
      });

      window.holai.ready = true;
    } catch (e) {
      console.warn('[holai] init falló:', e && e.message);
    }
  })();
})();
