import React, { useState, useEffect } from 'react'; import { useTranslation } from 'next-i18next'; import { apiv3Get, apiv3Post } from '~/client/util/apiv3-client'; import { toastSuccess, toastError } from '../client/util/apiNotification'; interface Props { messageErrors?: any, inputs?: any, email: string, token: string, } const CompleteUserRegistrationForm: React.FC = (props: Props) => { const { t } = useTranslation(); const { messageErrors, email, token, } = props; const [usernameAvailable, setUsernameAvailable] = useState(true); const [username, setUsername] = useState(''); const [name, setName] = useState(''); const [password, setPassword] = useState(''); const [disableForm, setDisableForm] = useState(false); useEffect(() => { const delayDebounceFn = setTimeout(async() => { try { const { data } = await apiv3Get('/check-username', { username }); if (data.ok) { setUsernameAvailable(data.valid); } } catch (error) { toastError(error, 'Error occurred when checking username'); } }, 500); return () => clearTimeout(delayDebounceFn); }, [username]); async function submitRegistration() { setDisableForm(true); try { await apiv3Post('/complete-registration', { username, name, password, token, }); toastSuccess('Registration succeed'); window.location.href = '/login'; } catch (err) { toastError(err, 'Registration failed'); setDisableForm(false); } } return ( <>
{messageErrors && (
{ messageErrors }
)}
setUsername(e.target.value)} required />
{!usernameAvailable && (

{t('installer.unavaliable_user_id')}

)}
setName(e.target.value)} required />
setPassword(e.target.value)} required />
GROWI.ORG
); }; export default CompleteUserRegistrationForm;