'use client' import styles from '@/app/styles/module/login.module.scss' import { useActionState, useEffect, useRef, useState, ChangeEvent } from 'react'; import { useTranslations } from 'next-intl'; import { confirmPassword, FormStateConfirmPassword } from '@/app/actions/auth'; import { useSearchParams } from 'next/navigation'; import { IconEye } from '@/app/ui/icons/icons'; import { SignupFormSchema } from '@/app/actions/definitions'; import * as z from 'zod'; export default function ResetPasswordForm() { const [state, formAction, isPending] = useActionState( confirmPassword, undefined, ); const passwordRef = useRef(null); const [showPassword, setShowPassword] = useState(false); const [showConfirmPassword, setShowConfirmPassword] = useState(false); const [formState, setFormState] = useState(undefined); const t = useTranslations('Login-register-form'); const searchParams = useSearchParams(); const email = searchParams.get('email'); console.log(email); useEffect(() => { if (state) { setFormState(state); } }, [state]) function showPassowrd(target: 'password' | 'confirm-password') { if (target === 'password') { setShowPassword(!showPassword); } else { setShowConfirmPassword(!showConfirmPassword); } } function validateField( fieldName: string, value: string, ) { switch (fieldName) { case 'confirm_password': const baseSchema = SignupFormSchema.shape.confirm_password; const baseResult = baseSchema.safeParse(value); if (!baseResult.success) { return baseResult; } const currentPassword = passwordRef.current?.value || ''; if (value !== currentPassword) { return { success: false, error: new z.ZodError([ { code: z.ZodIssueCode.custom, message: 'repeat-password', path: ['confirm_password'] } ]) }; } return { success: true, data: value }; case 'password': const schema = SignupFormSchema.shape[fieldName]; return schema.safeParse(value); default: throw new Error(`Unknown field: ${fieldName}`); } } function onChangeHandler(e: ChangeEvent): void { const fieldName = e.target.name; if (fieldName !== 'phone') { e.target.value = e.target.value.replace(/([^a-zA-Zа-яёА-ЯЁ0-9@.!#$%&"'*+/=?^_{|}~\-\s])/g, ''); } const validatedField = validateField(fieldName, e.target.value); if (validatedField.success) { setFormState(prevState => { if (!prevState?.error || !prevState?.error[fieldName]) { return prevState; } const { [fieldName]: _, ...newError } = prevState.error; return { ...prevState, error: newError }; }); } } return (
{formState?.error?.password && (

{ formState?.error?.password.split('&').map((e, index) => { return ( {t(e)}
) }) }

)}
{formState?.error?.confirm_password && (

{t(formState?.error?.confirm_password)}

)}
{/* {state?.error.server && (

{t(state?.error.server)}

)} */}
) }