import { useForm } from 'react-hook-form'; import { useState, useEffect } from 'react'; import { useOutletContext } from 'react-router-dom'; import { useRequestPasswordResetMutation } from 'librechat-data-provider/react-query'; import type { TRequestPasswordReset, TRequestPasswordResetResponse } from 'librechat-data-provider'; import type { TLoginLayoutContext } from '~/common'; import { useLocalize } from '~/hooks'; function RequestPasswordReset() { const localize = useLocalize(); const { register, handleSubmit, formState: { errors }, } = useForm(); const [resetLink, setResetLink] = useState(undefined); const [bodyText, setBodyText] = useState(undefined); const { startupConfig, setError, setHeaderText } = useOutletContext(); const requestPasswordReset = useRequestPasswordResetMutation(); const onSubmit = (data: TRequestPasswordReset) => { requestPasswordReset.mutate(data, { onSuccess: (data: TRequestPasswordResetResponse) => { if (!startupConfig?.emailEnabled) { setResetLink(data.link); } }, onError: () => { setError('com_auth_error_reset_password'); setTimeout(() => { setError(null); }, 5000); }, }); }; useEffect(() => { if (!requestPasswordReset.isSuccess) { setHeaderText('com_auth_reset_password'); setBodyText(undefined); return; } if (startupConfig?.emailEnabled) { setHeaderText('com_auth_reset_password_link_sent'); setBodyText(localize('com_auth_reset_password_email_sent')); return; } setHeaderText('com_auth_reset_password'); setBodyText( {localize('com_auth_click')}{' '} {localize('com_auth_here')} {' '} {localize('com_auth_to_reset_your_password')} , ); }, [ requestPasswordReset.isSuccess, startupConfig?.emailEnabled, resetLink, localize, setHeaderText, ]); if (bodyText) { return (
{bodyText}
); } return (
{errors.email && ( {errors.email.message} )}
); } export default RequestPasswordReset;