'use client'; import axios from 'axios'; import clsx from 'clsx'; import { useEffect, useState } from 'react'; import InfoError, { ErrorData } from '@/components/info/InfoError'; import SubmitButton from '@/components/ui/SubmitButton'; import TextInput from '@/components/ui/TextInput'; import TextURL from '@/components/ui/TextURL'; import AnimateFade from '@/components/wrap/AnimateFade'; import { useAuth } from '@/context/AuthContext'; import { IRequestPasswordData } from '@/models/user'; function RestorePasswordPage() { const { requestPasswordReset, loading, error, setError } = useAuth(); const [isCompleted, setIsCompleted] = useState(false); const [email, setEmail] = useState(''); function handleSubmit(event: React.FormEvent) { event.preventDefault(); if (!loading) { const data: IRequestPasswordData = { email: email }; requestPasswordReset(data, () => setIsCompleted(true)); } } useEffect(() => { setError(undefined); }, [email, setError]); return ( {!isCompleted ? (
setEmail(event.target.value)} /> {error ? : null} ) : null} {isCompleted ? (

На указанную почту отправлены инструкции по восстановлению пароля.

) : null}
); } export default RestorePasswordPage; // ====== Internals ========= function ProcessError({ error }: { error: ErrorData }): React.ReactElement { if (axios.isAxiosError(error) && error.response && error.response.status === 400) { return (
Данный email не используется на Портале.
); } else { return ; } }