import { useState, useEffect } from "react"; import { useDispatch, useSelector } from "react-redux"; import { useNavigate } from "react-router-dom"; import { clearError } from "../features/slices/details-slice"; import fetchLoginUser from "../features/fetch-async/fetchLoginUser"; function LoginPage() { const [email, setEmail] = useState(""); const [password, setPassword] = useState(""); const dispatch = useDispatch(); const navigate = useNavigate(); const { loading, error, token } = useSelector((state) => state.userDetails); // Redirect if already logged in useEffect(() => { if (token) { navigate("/"); } }, [token, navigate]); // Clear error on unmount useEffect(() => { return () => { dispatch(clearError()); }; }, [dispatch]); const handleSubmit = async (e) => { e.preventDefault(); const result = await dispatch(fetchLoginUser({ email, password })); if (fetchLoginUser.fulfilled.match(result)) { navigate("/"); } }; return (

Login

Enter your email and password, then press the button to continue.

{error && (
{error.message || `Error: ${error.status}`}
)}
setEmail(e.target.value)} placeholder="Your email" className="w-full rounded-xl bg-slate-800/80 border border-slate-600 focus:border-indigo-400 focus:ring-2 focus:ring-indigo-500/60 focus:outline-none px-4 py-2.5 text-slate-100 placeholder:text-slate-500 text-sm" required disabled={loading} />
setPassword(e.target.value)} placeholder="Your password" className="w-full rounded-xl bg-slate-800/80 border border-slate-600 focus:border-indigo-400 focus:ring-2 focus:ring-indigo-500/60 focus:outline-none px-4 py-2.5 text-slate-100 placeholder:text-slate-500 text-sm" required disabled={loading} />

Don't have an account?{" "} Register

); } export default LoginPage;