import { useForm } from 'react-hook-form'; import { useOutletContext } from 'react-router-dom'; import { useNavigate, useSearchParams } from 'react-router-dom'; import { useResetPasswordMutation } from 'librechat-data-provider/react-query'; import type { TResetPassword } from 'librechat-data-provider'; import type { TLoginLayoutContext } from '~/common'; import { useLocalize } from '~/hooks'; function ResetPassword() { const localize = useLocalize(); const { register, handleSubmit, watch, formState: { errors }, } = useForm(); const navigate = useNavigate(); const [params] = useSearchParams(); const password = watch('password'); const resetPassword = useResetPasswordMutation(); const { setError, setHeaderText } = useOutletContext(); const onSubmit = (data: TResetPassword) => { resetPassword.mutate(data, { onError: () => { setError('com_auth_error_invalid_reset_token'); }, onSuccess: () => { setHeaderText('com_auth_reset_password_success'); }, }); }; if (resetPassword.isSuccess) { return ( <>
{localize('com_auth_login_with_new_password')}
); } return (
{errors.password && ( {errors.password.message} )}
value === password || localize('com_auth_password_not_match'), })} aria-invalid={!!errors.confirm_password} className=" webkit-dark-styles transition-color peer w-full rounded-2xl border border-border-light bg-surface-primary px-3.5 pb-2.5 pt-3 text-text-primary duration-200 focus:border-green-500 focus:outline-none " placeholder=" " />
{errors.confirm_password && ( {errors.confirm_password.message} )} {errors.token && ( {errors.token.message} )} {errors.userId && ( {errors.userId.message} )}
); } export default ResetPassword;