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