import { yupResolver } from '@hookform/resolvers/yup'; import LoadingButton from '@mui/lab/LoadingButton'; import Paper from '@mui/material/Paper'; import Alert from '@mui/material/Alert'; import Typography from '@mui/material/Typography'; import useEnqueueSnackbar from 'hooks/useEnqueueSnackbar'; import * as React from 'react'; import { useNavigate, useSearchParams } from 'react-router-dom'; import * as yup from 'yup'; import Form from 'components/Form'; import TextField from 'components/TextField'; import * as URLS from 'config/urls'; import useAcceptInvitation from 'hooks/useAcceptInvitation'; import useFormatMessage from 'hooks/useFormatMessage'; const validationSchema = yup.object().shape({ password: yup.string().required('acceptInvitationForm.mandatoryInput'), confirmPassword: yup .string() .required('acceptInvitationForm.mandatoryInput') .oneOf([yup.ref('password')], 'acceptInvitationForm.passwordsMustMatch'), }); export default function ResetPasswordForm() { const enqueueSnackbar = useEnqueueSnackbar(); const formatMessage = useFormatMessage(); const navigate = useNavigate(); const [searchParams] = useSearchParams(); const acceptInvitation = useAcceptInvitation(); const token = searchParams.get('token'); const handleSubmit = async (values) => { await acceptInvitation.mutateAsync({ password: values.password, token, }); enqueueSnackbar(formatMessage('acceptInvitationForm.invitationAccepted'), { variant: 'success', SnackbarProps: { 'data-test': 'snackbar-accept-invitation-success', }, }); navigate(URLS.LOGIN); }; return ( theme.palette.text.disabled, pb: 2, mb: 2, }} gutterBottom data-test="accept-invitation-form-title" > {formatMessage('acceptInvitationForm.title')}
( <> {acceptInvitation.isError && ( {formatMessage('acceptInvitationForm.invalidToken')} )} {formatMessage('acceptInvitationForm.submit')} )} /> ); }