import React, {Dispatch, SetStateAction, useContext, useState} from "react"; import System from "@/lib/models/System"; import {AlertContext} from "@/context/AlertContext"; import {FontAwesomeIcon} from '@fortawesome/react-fontawesome'; import {faEnvelope, faLock, faSignature, faUser} from '@fortawesome/free-solid-svg-icons'; import {useTranslations} from "next-intl"; import {LangContext, LangContextProps} from "@/context/LangContext"; export default function StepOne( { username, email, setUsername, setEmail, handleNextStep }: { username: string; email: string; setUsername: Dispatch>, setEmail: Dispatch>, handleNextStep: Function; }) { const {errorMessage, successMessage} = useContext(AlertContext); const [firstName, setFirstName] = useState(''); const [lastName, setLastName] = useState(''); const [password, setPassword] = useState(''); const [repeatPassword, setRepeatPassword] = useState(''); const [userId, setUserId] = useState('') const t = useTranslations(); const {lang} = useContext(LangContext) async function handleStep(): Promise { if (!firstName || !lastName || !username || !password || !repeatPassword || !email) { errorMessage(t('registerStepOne.error.requiredFields')); return; } if (firstName.length < 2 || firstName.length > 50) { errorMessage(t('registerStepOne.error.firstNameLength')); return; } if (lastName.length < 2 || lastName.length > 50) { errorMessage(t('registerStepOne.error.lastNameLength')); return; } if (username.length < 3 || username.length > 50) { errorMessage(t('registerStepOne.error.usernameLength')); return; } if (System.verifyInput(firstName) || System.verifyInput(lastName) || System.verifyInput(username) || System.verifyInput(password) || System.verifyInput(repeatPassword) || System.verifyInput(email)) { errorMessage(t('registerStepOne.error.invalidInput')); return; } if (password != repeatPassword) { errorMessage(t('registerStepOne.error.passwordMismatch')); return; } try { const response: string = await System.postToServer(`register/pre`, { firstName, lastName, username, email, password, retypePass: repeatPassword }, lang); if (!response) { errorMessage(t('registerStepOne.error.preRegister')); return; } setUserId(response); successMessage(t('registerStepOne.success.preRegister')); handleNextStep(); } catch (e: unknown) { if (e instanceof Error) { errorMessage(e.message); } else { errorMessage(t('registerStepOne.error.unknown')); } } } return (
setFirstName(e.target.value)} required />
setLastName(e.target.value)} required />
setUsername(e.target.value)} required />

{t('registerStepOne.fields.username.note')}

setEmail(e.target.value)} required />
setPassword(e.target.value)} required />
setRepeatPassword(e.target.value)} required />
) }