// create boilerplate for ResetPasswordView: import { Box, Button, Container, FormControl, FormHelperText, Input, Sheet, Snackbar, Typography, } from '@mui/joy' import { useState } from 'react' import { useNavigate, useSearchParams } from 'react-router-dom' import { API_URL } from '../../Config' import Logo from '../../Logo' const UpdatePasswordView = () => { const navigate = useNavigate() const [password, setPassword] = useState('') const [passwordConfirm, setPasswordConfirm] = useState('') const [passwordError, setPasswordError] = useState(null) const [passworConfirmationError, setPasswordConfirmationError] = useState(null) const [searchParams] = useSearchParams() const [updateStatusOk, setUpdateStatusOk] = useState(null) const verifiticationCode = searchParams.get('c') const handlePasswordChange = e => { const password = e.target.value setPassword(password) if (password.length < 8) { setPasswordError('Password must be at least 8 characters') } else { setPasswordError(null) } } const handlePasswordConfirmChange = e => { setPasswordConfirm(e.target.value) if (e.target.value !== password) { setPasswordConfirmationError('Passwords do not match') } else { setPasswordConfirmationError(null) } } const handleSubmit = async () => { if (passwordError != null || passworConfirmationError != null) { return } try { const response = await fetch( `${API_URL}/auth/password?c=${verifiticationCode}`, { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify({ password: password }), }, ) if (response.ok) { setUpdateStatusOk(true) // wait 3 seconds and then redirect to login: setTimeout(() => { navigate('/login') }, 3000) } else { setUpdateStatusOk(false) } } catch (error) { setUpdateStatusOk(false) } } return ( Done tick Please enter your new password below { // if (e.key === 'Enter' && validateForm(validateFormInput)) { // handleSubmit(e) // } // }} /> {passwordError} { // if (e.key === 'Enter' && validateForm(validateFormInput)) { // handleSubmit(e) // } // }} /> {passworConfirmationError} {/* helper to show password not matching : */} { setUpdateStatusOk(null) }} > Password update failed, try again later ) } export default UpdatePasswordView