import ActionLink from '@/components/shared/ActionLink' import PasswordInput from '@/components/shared/PasswordInput' import Alert from '@/components/ui/Alert' import Button from '@/components/ui/Button' import { FormContainer, FormItem } from '@/components/ui/Form' import { ROUTES_ENUM } from '@/routes/route.constant' import { resetPassword } from '@/services/account.service' import { useLocalization } from '@/utils/hooks/useLocalization' import useTimeOutMessage from '@/utils/hooks/useTimeOutMessage' import type { AxiosError } from 'axios' import { Field, Form, Formik } from 'formik' import { useState } from 'react' import { useNavigate, useSearchParams } from 'react-router-dom' import * as Yup from 'yup' type ResetPasswordFormSchema = { password: string confirmPassword: string } const validationSchema = Yup.object().shape({ password: Yup.string().required('Please enter your password'), confirmPassword: Yup.string().oneOf([Yup.ref('password')], 'Your passwords do not match'), }) const ResetPassword = () => { const disableSubmit = false const signInUrl = ROUTES_ENUM.authenticated.login const [searchParams] = useSearchParams() const userId = searchParams.get('userId') const resetToken = searchParams.get('resetToken') const { translate } = useLocalization() // bu olmadan da oluyor sanırım // const result = useQuery({ // queryKey: ['verifyPasswordResetToken', userId, resetToken], // queryFn: () => verifyPasswordResetToken(userId, resetToken), // retry: false, // refetchOnWindowFocus: false, // }) const [resetComplete, setResetComplete] = useState(false) const [message, setMessage] = useTimeOutMessage() const navigate = useNavigate() const onSubmit = async ( values: ResetPasswordFormSchema, setSubmitting: (isSubmitting: boolean) => void, ) => { if (!userId || !resetToken) { return } const { password } = values setSubmitting(true) try { const resp = await resetPassword(userId, resetToken, password) if (resp.data) { setSubmitting(false) setResetComplete(true) } } catch (errors) { setMessage( (errors as AxiosError<{ message: string }>)?.response?.data?.message || (errors as Error).toString(), ) setSubmitting(false) } } const onContinue = () => { navigate(ROUTES_ENUM.authenticated.login) } return (
{resetComplete ? ( <>

{translate('::Abp.Account.ResetPassword.ResetDone')}

{translate('::Abp.Account.ResetPassword.ResetDone.Message')}

) : ( <>

{translate('::Abp.Account.ResetPassword.SetNewPassword')}

{translate('::Abp.Account.ResetPassword.SetNewPassword.Message')}

)}
{message && ( {message} )} { if (!disableSubmit) { onSubmit(values, setSubmitting) } else { setSubmitting(false) } }} > {({ touched, errors, isSubmitting }) => (
{!resetComplete ? ( <> ) : ( )}
{translate('::Abp.Account.Backto')} {translate('::Abp.Account.SignIn')}
)}
) } export default ResetPassword