import { useState } from 'react';
import { useAuth } from '../lib/auth';
import { supabase } from '../lib/supabase';
import { LegalModal, LEGAL_VERSION } from '../pages/Legal';

// Aceptacion de terminos en el PRIMER inicio de sesion del personal (meseros,
// encargados): sus cuentas las crea el dueño, asi que nunca pasaron por el
// checkbox del registro. Se registra en metadata igual que la del dueño
// (acepto_terminos + version + fecha). Auditoria legal 2026-07-23.
export default function AceptarLegal() {
  const { session } = useAuth();
  const [listo, setListo] = useState(false);
  const [guardando, setGuardando] = useState(false);
  const [err, setErr] = useState<string | null>(null);
  const [doc, setDoc] = useState<'terminos' | 'privacidad' | null>(null);

  const meta = session?.user?.user_metadata as { acepto_terminos?: boolean } | undefined;
  if (!session || meta?.acepto_terminos || listo) return null;

  async function aceptar() {
    setErr(null);
    setGuardando(true);
    const { error } = await supabase.auth.updateUser({
      data: { acepto_terminos: true, terminos_version: LEGAL_VERSION, acepto_en: new Date().toISOString() },
    });
    setGuardando(false);
    if (error) {
      setErr('No se pudo guardar. Revisa tu conexión e intenta de nuevo.');
      return;
    }
    setListo(true);
  }

  return (
    <>
      <div className="fixed inset-0 z-[75] flex items-center justify-center bg-black/70 p-4">
        <div className="w-full max-w-sm rounded-2xl bg-superficie p-5 text-white ring-1 ring-white/10">
          <h2 className="text-lg font-extrabold">Antes de empezar</h2>
          <p className="mt-2 text-sm leading-relaxed text-niebla">
            Para usar Gustito Xpress necesitas aceptar los{' '}
            <button onClick={() => setDoc('terminos')} className="font-semibold text-dorado underline">
              Términos y Condiciones
            </button>{' '}
            y la{' '}
            <button onClick={() => setDoc('privacidad')} className="font-semibold text-dorado underline">
              Política de Privacidad
            </button>
            . Es una sola vez.
          </p>
          {err && <p className="mt-3 text-sm font-semibold text-red-400">{err}</p>}
          <button
            onClick={aceptar}
            disabled={guardando}
            className="mt-4 w-full rounded-xl bg-dorado py-3 text-sm font-bold text-noche disabled:opacity-60"
          >
            {guardando ? 'Guardando...' : 'Acepto y continuar'}
          </button>
        </div>
      </div>
      {doc && <LegalModal doc={doc} onCerrar={() => setDoc(null)} />}
    </>
  );
}
