import styles from '@/app/styles/module/login.module.scss'; import { useTranslations } from 'next-intl'; import { ChangeEvent, MouseEvent, useActionState, useState, useEffect } from 'react'; import { resendConfirmEmail, confirmEmail } from '@/app/actions/auth'; import { IconRefresh } from '@/app/ui/icons/icons'; export default function ConfirmMailModalWindow({ userId, email }: { userId: number | undefined, email: string | undefined }) { const [stateEmailConfrim, formActionEmailConfrim, isPendingEmailConfrim] = useActionState( confirmEmail, undefined, ); const [confirmCodeValue, setConfirmCodeValue] = useState(''); const [isInputDisabled, setIsInputDisabled] = useState(true); const [timer, setTimer] = useState(30); const t = useTranslations('Login-register-form'); async function reSendEmailConfirmCode(e: MouseEvent) { e.preventDefault(); if (userId) { await resendConfirmEmail(userId); } } function onChangeHandler(e: ChangeEvent) { const newValue = e.target.value.replace(/([^0-9])/g, ''); if (newValue.length <= 6) { setConfirmCodeValue(newValue); } } useEffect(() => { let interval: NodeJS.Timeout; if (timer > 0 && isInputDisabled) { interval = setInterval(() => { setTimer(prev => { if (prev <= 1) { setIsInputDisabled(false); return 0; } return prev - 1; }); }, 1000); } return () => { if (interval) clearInterval(interval); }; }, [timer, isInputDisabled]); /* const resetTimer = () => { setIsInputDisabled(true); setTimer(30); }; */ return (
e.stopPropagation()} >
{ formActionEmailConfrim(e); }}>

{t('enter-confirmation-code')}

{email}

) => { onChangeHandler(e) }} /> {stateEmailConfrim?.error && (

{t('entered-code-is-incorrect')}

)}
{stateEmailConfrim?.error}
) }