import { useEffect, useState } from 'react' import { Button, Card, Container, Form } from 'react-bootstrap' import { Link, useNavigate, useSearchParams } from 'react-router-dom' import { useTranslation } from 'react-i18next' import { requestPasswordReset, resetPassword } from '../api/client' export default function ResetPassword() { const { t } = useTranslation() const navigate = useNavigate() const [searchParams] = useSearchParams() const token = searchParams.get('token') || '' const emailFromLink = searchParams.get('email') || '' const isResetFlow = token.length > 0 const [email, setEmail] = useState('') const [password, setPassword] = useState('') const [passwordConfirmation, setPasswordConfirmation] = useState('') const [error, setError] = useState('') const [loading, setLoading] = useState(false) useEffect(() => { if (emailFromLink) { setEmail(emailFromLink) } }, [emailFromLink]) const handleSubmit = async (event) => { event.preventDefault() setError('') setLoading(true) try { if (isResetFlow) { await resetPassword({ token, email, password, password_confirmation: passwordConfirmation, }) navigate('/login') } else { await requestPasswordReset(email) navigate('/') } } catch (err) { setError(err.message) } finally { setLoading(false) } } return ( {isResetFlow ? t('auth.reset_password_title') : t('auth.forgot_password')} {isResetFlow ? t('auth.reset_password_hint') : t('auth.forgot_password_hint')} {error &&

{error}

}
{t('form.email')} setEmail(event.target.value)} placeholder={t('auth.reset_email_placeholder')} required /> {isResetFlow && ( <> {t('form.password')} setPassword(event.target.value)} required /> {t('auth.confirm_password')} setPasswordConfirmation(event.target.value)} required /> )}