import { Box, Button, Container, Grid, IconButton, InputAdornment, TextField, Typography, } from '@mui/material'; import { useFormik } from 'formik'; import { useTranslation } from 'next-i18next'; import Link from 'next/link'; import { useRouter } from 'next/router'; import { useState } from 'react'; import { FORGOT_PASSWORD_PAGE, LOGIN_PAGE } from '../../../constants/pages'; import { createUser } from '../../../requests/accounts/accountRequests'; import { registerSchema } from '../../../schemas/registerSchema'; import ErrorMessageComponent from '../../mui/ErrorMessageComponent'; interface Values { fullName: string; username: string; email: string; password: string; address: string; address2: string; city: string; country: string; postcode: string; } const RegisterForm = () => { const { t } = useTranslation(['forms', 'register']); const router = useRouter(); const [showPassword, setShowPassword] = useState(false); const handleClickShowPassword = () => setShowPassword(!showPassword); const handleMouseDownPassword = () => setShowPassword(!showPassword); const [showConfirmPassword, setShowConfirmPassword] = useState(false); const handleClickShowConfirmPassword = () => setShowConfirmPassword(!showConfirmPassword); const handleMouseDownConfirmPassword = () => setShowConfirmPassword(!showConfirmPassword); const [error, setError] = useState({ hasError: false, errorMessage: '' }); const submitHandler = async (values: Values) => { try { const result = await createUser( values.fullName, values.username, values.email, values.password, values.address, values.address2, values.city, values.country, values.postcode ); router.push(LOGIN_PAGE); } catch (error) { if (error instanceof Error) { setError({ hasError: true, errorMessage: error?.message }); } } }; const formik = useFormik({ initialValues: { fullName: '', username: '', email: '', password: '', confirmPassword: '', address: '', address2: '', city: '', country: '', postcode: '', }, validationSchema: registerSchema, onSubmit: submitHandler, validateOnBlur: true, enableReinitialize: true, }); return ( {t('register:Title')} {error.hasError && } ), }} /> ), }} /> {t('register:ForgotPassword')} {t('register:HaveAccount')} ); }; export default RegisterForm;