import { joiResolver } from '@hookform/resolvers/joi'; import { Password } from '@mui/icons-material'; import { Button, TextField } from '@mui/material'; import Joi from 'joi'; import { useTranslation } from 'next-i18next'; import { Controller, useForm } from 'react-hook-form'; import { useMutation } from 'react-query'; import BaseModal from '@/components/shared/BaseModal'; import { forgotPassword, ForgotPasswordParams } from '@/services/auth'; import { ServerError } from '@/services/axios'; import { useAppDispatch, useAppSelector } from '@/store/hooks'; import { setModalState } from '@/store/modal/modalSlice'; type FormData = { email: string; }; const defaultState: FormData = { email: '', }; const schema = Joi.object({ email: Joi.string() .email({ tlds: { allow: false } }) .required(), }); const ForgotPasswordModal: React.FC = () => { const { t } = useTranslation(); const dispatch = useAppDispatch(); const { open: isOpen } = useAppSelector((state) => state.modal['auth.forgot']); const { mutate, isLoading } = useMutation(forgotPassword); const { reset, control, handleSubmit } = useForm({ defaultValues: defaultState, resolver: joiResolver(schema), }); const handleClose = () => { dispatch(setModalState({ modal: 'auth.forgot', state: { open: false } })); reset(); }; const onSubmit = ({ email }: FormData) => { mutate({ email }, { onSettled: handleClose }); }; return ( <> } isOpen={isOpen} heading={t('modals.auth.forgot-password.heading')} handleClose={handleClose} footerChildren={ } >

{t('modals.auth.forgot-password.body')}

( )} />

{t('modals.auth.forgot-password.help-text')}

); }; export default ForgotPasswordModal;