burger-online
68 строк · 2.2 Кб
1import {Button, Input} from '@ya.praktikum/react-developer-burger-ui-components'
2import React from 'react'
3import {useSelector} from 'react-redux'
4import {Link, Navigate, useNavigate} from 'react-router-dom'
5import PasswordInput from '../../components/UI/password-input/password-input'
6import {useAppDispatch, useForm} from '../../hooks'
7import {fetchResetPassword} from '../../redux/user/actions'
8import {catchError, userStore} from '../../redux/user/slice'
9import {THandleSubmitForm} from '../../types'
10
11const ResetPassword = () => {
12const dispatch = useAppDispatch()
13const navigate = useNavigate()
14const {resetPasswordStatus, errorStatus} = useSelector(userStore)
15
16const {values, handleChanges} = useForm({
17password: '',
18token: '',
19})
20
21const handleResetPassword = (e: THandleSubmitForm) => {
22e.preventDefault()
23dispatch(fetchResetPassword(values))
24navigate('/', {replace: true})
25}
26
27React.useEffect(() => {
28setTimeout(() => {
29dispatch(catchError(null))
30}, 6000)
31}, [errorStatus, dispatch])
32
33if (!resetPasswordStatus) return <Navigate to='/forgot-password' replace />
34return (
35<section className='wrapper'>
36<form className='content-route' onSubmit={handleResetPassword}>
37<h2 className='text text_type_main-medium'>Восстановление пароля</h2>
38<PasswordInput
39autoFocus
40value={values.password}
41placeholder='Введите новый пароль'
42onChange={handleChanges}
43/>
44<Input
45value={values.token}
46type='text'
47name='token'
48placeholder='Введите код из письма'
49onChange={handleChanges}
50/>
51<Button htmlType='submit'>Сохранить</Button>
52<span
53className={`text text_type_main-default ${errorStatus ? 'text-error-active' : 'text-error'}`}
54>
55{errorStatus?.message}
56</span>
57</form>
58<p className='text text_type_main-default text_color_inactive'>
59Вспомнили пароль?{' '}
60<Link to='/login' className='route-link text_color_accent'>
61Войти
62</Link>
63</p>
64</section>
65)
66}
67
68export default ResetPassword
69