import BackgroundPattern from "../../Components/BackgroundPattern/BackgroundPattern"; import "./index.css"; import LockIcon from "../../assets/Images/lock-icon.png"; import Check from "../../Components/Check/Check"; import Button from "../../Components/Button"; import LeftArrow from "../../assets/Images/arrow-left.png"; import { useParams } from "react-router-dom"; import { useState, useEffect } from "react"; import { newPasswordValidation } from "../../Validation/validation"; import axiosInstance from "../../Utils/axiosConfig"; import { useNavigate } from "react-router-dom"; import Field from "../../Components/Inputs/Field"; const SetNewPassword = () => { const navigate = useNavigate(); const [errors, setErrors] = useState({}); const [form, setForm] = useState({}); const [isLoading, setIsLoading] = useState(false); const idMap = { "register-password-input": "password", "confirm-password-input": "confirm", }; const handleInput = (e) => { const fieldName = idMap[e.target.id]; setForm({ ...form, [fieldName]: e.target.value }); console.log(errors); }; const handleSubmit = async () => { // TODO show loading spinner setIsLoading(true); try { await axiosInstance.post("/auth/recovery/validate", { recoveryToken: token, }); await axiosInstance.post("/auth/recovery/reset", { ...form, recoveryToken: token, }); navigate("/new-password-confirmed"); } catch (error) { // TODO display error (Toast?) alert(error.response.data.msg); } finally { setIsLoading(false); } }; useEffect(() => { const { error } = newPasswordValidation.validate(form, { abortEarly: false, }); if (error) { const validationErrors = error.details.reduce((acc, err) => { return { ...acc, [err.path[0]]: err.message }; }, {}); setErrors(validationErrors); } else { setErrors({}); } }, [form]); const [visibility, setVisibility] = useState(false); const { token } = useParams(); return (
LockIcon
Set new password
Your new password must be different to previously used passwords.
LeftArrow
Back to log in
); }; export default SetNewPassword;