import React, { useEffect, useState } from 'react'; import { Button, Form, Grid, Header, Image, Card, Message, } from 'semantic-ui-react'; import { useTranslation } from 'react-i18next'; import { API, copy, getLogo, showError, showNotice } from '../helpers'; import { useSearchParams } from 'react-router-dom'; const PasswordResetConfirm = () => { const { t } = useTranslation(); const [inputs, setInputs] = useState({ email: '', token: '', }); const { email, token } = inputs; const [loading, setLoading] = useState(false); const [disableButton, setDisableButton] = useState(false); const [newPassword, setNewPassword] = useState(''); const logo = getLogo(); const [countdown, setCountdown] = useState(30); const [searchParams, setSearchParams] = useSearchParams(); useEffect(() => { let token = searchParams.get('token'); let email = searchParams.get('email'); setInputs({ token, email, }); }, []); useEffect(() => { let countdownInterval = null; if (disableButton && countdown > 0) { countdownInterval = setInterval(() => { setCountdown(countdown - 1); }, 1000); } else if (countdown === 0) { setDisableButton(false); setCountdown(30); } return () => clearInterval(countdownInterval); }, [disableButton, countdown]); async function handleSubmit(e) { setDisableButton(true); if (!email) return; setLoading(true); const res = await API.post(`/api/user/reset`, { email, token, }); const { success, message } = res.data; if (success) { let password = res.data.data; setNewPassword(password); await copy(password); showNotice(t('messages.notice.password_copied', { password })); } else { showError(message); } setLoading(false); } return (
{t('auth.reset.confirm.title')}
{newPassword && ( { e.target.select(); navigator.clipboard.writeText(newPassword); showNotice(t('auth.reset.confirm.notice')); }} /> )} {newPassword && (

{t('auth.reset.confirm.notice')}

)}
); }; export default PasswordResetConfirm;