import { useState, useEffect } from "react"; import { useDispatch, useSelector } from "react-redux"; import { useNavigate } from "react-router-dom"; import fetchRegisterUser from "../features/fetch-async/fetchRegisterUser"; import { USER_NAME_UNDEFINED, USER_EMAIL_UNDEFINED, } from "../features/constants"; function RegisterPage() { const [login, setLogin] = useState(""); const [email, setEmail] = useState(""); const [password, setPassword] = useState(""); const [confirm, setConfirm] = useState(""); const [validationError, setValidationError] = useState(""); const dispatch = useDispatch(); const navigate = useNavigate(); const { userName, userEmail, loading, error } = useSelector( (state) => state.userDetails ); useEffect(() => { if (loading) return; if ( userName !== USER_NAME_UNDEFINED && userEmail !== USER_EMAIL_UNDEFINED ) { navigate("/"); } }, [loading, userName, userEmail, navigate]); const handleClear = () => { setLogin(""); setEmail(""); setPassword(""); setConfirm(""); setValidationError(""); }; const handleSubmit = (e) => { e.preventDefault(); setValidationError(""); if (login.length < 3) { setValidationError("Login must be at least 3 characters."); return; } if (password.length < 8) { setValidationError("Password must be at least 8 characters."); return; } if (password !== confirm) { setValidationError("Password and Confirm password do not match."); return; } const payload = { username: login, email: email, password: password, confirmPassword: confirm, }; dispatch(fetchRegisterUser(payload)); }; return (
Create a new account by choosing a login, email and a strong password.
{(validationError || error) && (