import { useState } from 'react'; import { useForm } from 'react-hook-form'; import { useNavigate, useSearchParams } from 'react-router-dom'; import { useGetStartupConfig, useResetPasswordMutation } from 'librechat-data-provider/react-query'; import type { TResetPassword } from 'librechat-data-provider'; import { ThemeSelector } from '~/components/ui'; import { useLocalize } from '~/hooks'; function ResetPassword() { const localize = useLocalize(); const { register, handleSubmit, watch, formState: { errors }, } = useForm(); const resetPassword = useResetPasswordMutation(); const config = useGetStartupConfig(); const [resetError, setResetError] = useState(false); const [params] = useSearchParams(); const navigate = useNavigate(); const password = watch('password'); const onSubmit = (data: TResetPassword) => { resetPassword.mutate(data, { onError: () => { setResetError(true); }, }); }; 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')} ); if (resetPassword.isSuccess) { return (

{localize('com_auth_reset_password_success')}

{localize('com_auth_login_with_new_password')}
); } else { return (
Logo

{localize('com_auth_reset_password')}

{resetError && (
{localize('com_auth_error_invalid_reset_token')}{' '} {localize('com_auth_click_here')} {' '} {localize('com_auth_to_try_again')}
)}
{errors.password && ( {/* @ts-ignore not sure why */} {errors.password.message} )}
value === password || localize('com_auth_password_not_match'), })} aria-invalid={!!errors.confirm_password} className="webkit-dark-styles peer block w-full appearance-none rounded-md border border-gray-300 bg-transparent px-3.5 pb-3.5 pt-4 text-sm text-gray-900 focus:border-green-500 focus:outline-none focus:ring-0 dark:border-gray-600 dark:text-white dark:focus:border-green-500" placeholder=" " >
{errors.confirm_password && ( {/* @ts-ignore not sure why */} {errors.confirm_password.message} )} {errors.token && ( {/* @ts-ignore not sure why */} {errors.token.message} )} {errors.userId && ( {/* @ts-ignore not sure why */} {errors.userId.message} )}
{privacyPolicyRender} {privacyPolicyRender && termsOfServiceRender && (
)} {termsOfServiceRender}
); } } export default ResetPassword;