// AdminApp.jsx — entrada del panel admin: sesión + login/dashboard
function AdminApp() {
  const [session, setSession] = React.useState(null);
  const [ready, setReady] = React.useState(false);
  const [initError, setInitError] = React.useState('');

  React.useEffect(() => {
    let mounted = true;

    // Guardia: supabaseApi debe estar inicializado (CDN cargado)
    if (!window.supabaseApi || !window.sb) {
      setInitError('No se pudo conectar con Supabase. Recarga la página (F5). Si persiste, comprueba que config.js tiene la anon key correcta.');
      setReady(true);
      return;
    }

    // Timeout de seguridad: si getSession no responde en 8s mostramos error
    const timeout = setTimeout(() => {
      if (!mounted) return;
      setInitError('Tiempo de espera agotado conectando con Supabase. Comprueba tu conexión y recarga.');
      setReady(true);
    }, 8000);

    window.supabaseApi.getSession().then((s) => {
      if (!mounted) return;
      clearTimeout(timeout);
      setSession(s);
      setReady(true);
    }).catch((e) => {
      if (!mounted) return;
      clearTimeout(timeout);
      setInitError(e.message || 'Error al verificar la sesión.');
      setReady(true);
    });

    const { data } = window.sb.auth.onAuthStateChange((_event, s) => {
      setSession(s);
    });

    return () => { mounted = false; clearTimeout(timeout); data?.subscription?.unsubscribe?.(); };
  }, []);

  if (!ready) {
    return <div className="im-admin-boot">Cargando…</div>;
  }
  if (initError) {
    return (
      <div className="im-admin-login">
        <div className="im-admin-login-card">
          <h1 className="im-admin-login-title">Panel IsaMuñoz</h1>
          <div className="im-admin-error" style={{ marginTop: 8 }}>{initError}</div>
          <button className="im-btn im-btn-primary" style={{ marginTop: 12 }} onClick={() => window.location.reload()}>
            Recargar página
          </button>
        </div>
      </div>
    );
  }
  if (!session) {
    return <AdminLogin onLogin={() => { }} />;
  }
  return <AdminDashboard session={session} />;
}

window.AdminApp = AdminApp;
