import { useForm } from 'react-hook-form'; import { useState, useEffect } from 'react'; import { useGetStartupConfig, useRequestPasswordResetMutation, } from 'librechat-data-provider/react-query'; import type { TRequestPasswordReset, TRequestPasswordResetResponse } from 'librechat-data-provider'; import { ThemeSelector } from '~/components/ui'; import { useLocalize } from '~/hooks'; function RequestPasswordReset() { const localize = useLocalize(); const { register, handleSubmit, formState: { errors }, } = useForm(); const requestPasswordReset = useRequestPasswordResetMutation(); const config = useGetStartupConfig(); const [requestError, setRequestError] = useState(false); const [resetLink, setResetLink] = useState(undefined); const [headerText, setHeaderText] = useState(''); const [bodyText, setBodyText] = useState(undefined); const onSubmit = (data: TRequestPasswordReset) => { requestPasswordReset.mutate(data, { onSuccess: (data: TRequestPasswordResetResponse) => { console.log('emailEnabled: ', config.data?.emailEnabled); if (!config.data?.emailEnabled) { setResetLink(data.link); } }, onError: () => { setRequestError(true); setTimeout(() => { setRequestError(false); }, 5000); }, }); }; useEffect(() => { if (requestPasswordReset.isSuccess) { if (config.data?.emailEnabled) { setHeaderText(localize('com_auth_reset_password_link_sent')); setBodyText(localize('com_auth_reset_password_email_sent')); } else { setHeaderText(localize('com_auth_reset_password')); setBodyText( {localize('com_auth_click')}{' '} {localize('com_auth_here')} {' '} {localize('com_auth_to_reset_your_password')} , ); } } else { setHeaderText(localize('com_auth_reset_password')); setBodyText(undefined); } }, [requestPasswordReset.isSuccess, config.data?.emailEnabled, resetLink, localize]); const renderFormContent = () => { if (bodyText) { return (
{bodyText}
); } else { return (
{errors.email && ( {/* @ts-ignore not sure why */} {errors.email.message} )}
); } }; const privacyPolicy = config.data?.interface?.privacyPolicy; const termsOfService = config.data?.interface?.termsOfService; const privacyPolicyRender = privacyPolicy?.externalUrl && ( {localize('com_ui_privacy_policy')} ); const termsOfServiceRender = termsOfService?.externalUrl && ( {localize('com_ui_terms_of_service')} ); return (
Logo

{headerText}

{requestError && (
{localize('com_auth_error_reset_password')}
)} {renderFormContent()}
{privacyPolicyRender} {privacyPolicyRender && termsOfServiceRender && (
)} {termsOfServiceRender}
); } export default RequestPasswordReset;