import React, { useEffect, useState } from 'react'; import { Link, useLocation, useNavigate } from 'react-router'; import { useAuth } from '@/context/AuthContext'; import { login } from "@/utils/api/auth"; import useRoutes from "@/hooks/useRoutes"; import SolidButton from "@/components/ui/Buttons/SolidButton"; import Alert from "@/components/ui/Alert"; const LoginForm = () => { const { login: authLogin } = useAuth(); const routes = useRoutes(); const [email, setEmail] = useState(''); const [password, setPassword] = useState(''); const [error, setError] = useState(''); const [alertSuccess, setAlertSuccess] = useState([]) const navigate = useNavigate(); const location = useLocation(); const searchParams = new URLSearchParams(location.search); const isRegistered = searchParams.get('registered') === 'true'; useEffect(() => { if (isRegistered) { setAlertSuccess(['Registration successful!',' You can now log in.']); const timer = setTimeout(() => { const params = new URLSearchParams(searchParams.toString()); params.delete('registered'); const newUrl = `${window.location.pathname}?${params.toString()}`; navigate(newUrl, { replace: true }); }, 3000); return () => clearTimeout(timer) } }, [isRegistered, navigate, searchParams]) const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); try { await login(email, password); authLogin(); navigate('/', { replace: true }); } catch (err) { const errorMessage = err instanceof Error ? err.message : 'Login failed'; setError(errorMessage); } }; return (
DISH PLANNER
{ alertSuccess.length > 0 && {alertSuccess.map((msg, index) => ( {msg}
))}
}
{error &&

{error}

} setEmail(e.target.value)} required className="w-full p-2 mb-4 border rounded border-secondary bg-gray-600 text-secondary" /> setPassword(e.target.value)} required className="w-full p-2 mb-4 border rounded text-secondary border-secondary bg-gray-600" /> Login Create an account
) } export default LoginForm