import { Box, Stack, Typography } from "@mui/material"; import { useTheme } from "@emotion/react"; import { createToast } from "../../Utils/toastUtils"; import { useDispatch, useSelector } from "react-redux"; import { forgotPassword } from "../../Features/Auth/authSlice"; import { useEffect, useState } from "react"; import { credentials } from "../../Validation/validation"; import { useNavigate } from "react-router-dom"; import TextInput from "../../Components/Inputs/TextInput"; import Logo from "../../assets/icons/checkmate-icon.svg?react"; import Key from "../../assets/icons/key.svg?react"; import Background from "../../assets/Images/background-grid.svg?react"; import LoadingButton from "@mui/lab/LoadingButton"; import IconBox from "../../Components/IconBox"; import "./index.css"; const ForgotPassword = () => { const navigate = useNavigate(); const dispatch = useDispatch(); const theme = useTheme(); const { isLoading } = useSelector((state) => state.auth); const [errors, setErrors] = useState({}); const [form, setForm] = useState({ email: "", }); useEffect(() => { const email = sessionStorage.getItem("email"); email && setForm({ email: sessionStorage.getItem("email") }); }, []); const handleSubmit = async (event) => { event.preventDefault(); const { error } = credentials.validate(form, { abortEarly: false }); if (error) { // validation errors const err = error.details && error.details.length > 0 ? error.details[0].message : "Error validating data."; setErrors({ email: err }); createToast({ body: err, }); } else { const action = await dispatch(forgotPassword(form)); if (action.payload.success) { sessionStorage.setItem("email", form.email); navigate("/check-email"); createToast({ body: `Instructions sent to ${form.email}.`, }); } else { if (action.payload) { // dispatch errors createToast({ body: action.payload.msg, }); } else { // unknown errors createToast({ body: "Unknown error.", }); } } } }; const handleChange = (event) => { const { value } = event.target; setForm({ email: value }); const { error } = credentials.validate({ email: value }, { abortEarly: false }); if (error) setErrors({ email: error.details[0].message }); else delete errors.email; }; const handleNavigate = () => { sessionStorage.removeItem("email"); navigate("/login"); }; return ( Checkmate .MuiStack-root": { border: 1, borderRadius: theme.spacing(5), borderColor: theme.palette.primary.lowContrast, backgroundColor: theme.palette.primary.main, padding: { xs: theme.spacing(12), sm: theme.spacing(20), }, }, }} > Forgot password? No worries, we'll send you reset instructions. Send instructions Go back to — Log In ); }; export default ForgotPassword;