"use client"; import { useState } from "react"; import { Button } from "@/components/ui/button"; import { Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle, } from "@/components/ui/dialog"; import { Input } from "@/components/ui/input"; import { Label } from "@/components/ui/label"; import { useSession } from "@/lib/hooks/use-session"; interface LoginDialogProps { open: boolean; onOpenChange: (open: boolean) => void; } export function LoginDialog({ open, onOpenChange }: LoginDialogProps) { const [emailOrUsername, setEmailOrUsername] = useState(""); const [password, setPassword] = useState(""); const [isLoading, setIsLoading] = useState(false); const [error, setError] = useState(null); const { refreshSession } = useSession(); const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); setIsLoading(true); setError(null); try { const response = await fetch("/api/auth/login", { method: "POST", headers: { "Content-Type": "application/json", }, credentials: "include", body: JSON.stringify({ emailOrUsername, password, }), }); const data = await response.json(); if (data.success) { // Atualizar sessão await refreshSession(); // Fechar diálogo onOpenChange(false); // Limpar formulário setEmailOrUsername(""); setPassword(""); // Recarregar página para atualizar estado window.location.reload(); } else { setError(data.error || "Erro ao fazer login"); } } catch (_err) { setError("Erro ao conectar com o servidor"); } finally { setIsLoading(false); } }; return ( Entrar Faça login para acessar sua conta
setEmailOrUsername(e.target.value)} required disabled={isLoading} />
setPassword(e.target.value)} required disabled={isLoading} />
{error && (
{error}
)}
); }