import { useState, useEffect } from "react"; import { ProfileService } from "../services/profile.service"; import { useAuth } from "../context/AuthContext"; import { AuthService } from "../services/auth.service"; export default function PerfilPage() { const { user, refreshSession } = useAuth(); const [loading, setLoading] = useState(true); const [saving, setSaving] = useState(false); const [showEmailModal, setShowEmailModal] = useState(false); const [newEmail, setNewEmail] = useState(""); const [authCode, setAuthCode] = useState(""); // Código Google Authenticator const [loadingEmail, setLoadingEmail] = useState(false); const [formData, setFormData] = useState({ firstName: "", lastName: "", phoneNumber: "", }); useEffect(() => { loadProfile(); }, []); const loadProfile = async () => { try { const data = await ProfileService.getProfile(); setFormData({ firstName: data.firstName || "", lastName: data.lastName || "", phoneNumber: data.phoneNumber || "", }); } catch (err) { console.error("Error loading profile", err); } finally { setLoading(false); } }; const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); setSaving(true); try { await ProfileService.updateProfile(formData); alert("Perfil actualizado con éxito"); if (refreshSession) refreshSession(); } catch (err) { alert("Error al actualizar el perfil"); } finally { setSaving(false); } }; if (loading) { return (
); } return (

Mi Perfil

Gestiona tu información personal

{/* Sidebar Info */}
{user?.username?.[0].toUpperCase()}

{user?.username}

{user?.email}

{user?.userType === 3 ? "🛡️ Administrador" : "👤 Usuario Particular"}
{/* Edit Form */}
setFormData({ ...formData, firstName: e.target.value }) } className="w-full bg-white/5 border border-white/10 rounded-2xl px-5 py-4 text-sm text-white outline-none focus:border-blue-500 transition-all font-medium" placeholder="Tu nombre" />
setFormData({ ...formData, lastName: e.target.value }) } className="w-full bg-white/5 border border-white/10 rounded-2xl px-5 py-4 text-sm text-white outline-none focus:border-blue-500 transition-all font-medium" placeholder="Tu apellido" />
setFormData({ ...formData, phoneNumber: e.target.value }) } className="w-full bg-white/5 border border-white/10 rounded-2xl px-5 py-4 text-sm text-white outline-none focus:border-blue-500 transition-all font-medium" placeholder="Ej: +54 9 11 1234 5678" />
{showEmailModal && (
📧

Cambiar Email

Ingresa tu nueva dirección y valida con tu autenticador.

setNewEmail(e.target.value)} className="w-full bg-black/40 border border-white/10 rounded-xl px-4 py-3 text-white text-sm outline-none focus:border-blue-500 transition-all placeholder:text-gray-700" />
setAuthCode(e.target.value.replace(/\D/g, "")) } className="w-full bg-black/40 border border-white/10 rounded-xl px-4 py-3 text-white text-center font-mono text-xl tracking-[0.3em] outline-none focus:border-blue-500 transition-all placeholder:text-gray-700 placeholder:tracking-normal" />
)}
); }