import { ReactElement, Suspense, useState } from 'react'; import { ErrorMessage, Form, Formik } from 'formik'; import { Alert, Button, FormControl, FormControlLabel, IconButton, InputAdornment, InputLabel, Link, OutlinedInput, Radio, RadioGroup, Skeleton, Stack, TextField, Typography, } from '@mui/material'; import signupBanner from 'assets/authentication-banners/green.png'; import IconifyIcon from 'components/base/IconifyIcon'; import logo from 'assets/logo/favicon-logo.png'; import Image from 'components/base/Image'; import { axiosInstance } from '../../axiosApi.js'; import PasswordStrengthChecker from '../../components/PasswordStrengthChecker'; import { useNavigate } from 'react-router-dom'; type SignUpValues = { email: string; first_name: string; last_name: string; password: string; password2: string; ownerType: string; }; const SignUp = (): ReactElement => { const [showPassword, setShowPassword] = useState(false); const [showPassword2, setShowPassword2] = useState(false); const [password, setPassword] = useState(''); const [errorMessage, setErrorMessage] = useState(null); const handleClickShowPassword = () => setShowPassword(!showPassword); const handleClickShowPassword2 = () => setShowPassword2(!showPassword2); const navigate = useNavigate(); const handleSignUp = async ({ email, first_name, last_name, ownerType, password, password2, }: SignUpValues): Promise => { try { const response = await axiosInstance.post('/register/', { email: email, first_name: first_name, last_name: last_name, user_type: ownerType, password: password, password2: password2, }); if (response.status == 201) { navigate('/authentication/login'); } else { console.log(`No good: ${response}`); } } catch (error) { const hasErrors = Object.keys(error.response.data).length > 0; if (hasErrors) { setErrorMessage(error.response.data); } else { setErrorMessage(null); } } }; return ( theme.shadows[3]} width={{ md: 960 }} > Signup {({ setFieldValue }) => (
{errorMessage ? (
    {Object.entries(errorMessage).map(([fieldName, errorMessages]) => (
  • {fieldName} {errorMessages.length > 0 ? (
      {errorMessages.map((message, index) => (
    • {message}
    • // Key for each message ))}
    ) : ( No specific errors for this field. )}
  • ))}
) : null} First Name setFieldValue('first_name', event.target.value)} placeholder="Enter your first name" id="first_name" InputProps={{ endAdornment: ( ), }} />
Last Name setFieldValue('last_name', event.target.value)} placeholder="Enter your last name" id="last_name" InputProps={{ endAdornment: ( ), }} /> Email } sx={{ width: 1, backgroundColor: 'action.focus', }} onChange={(event) => setFieldValue('email', event.target.value)} /> Account Type setFieldValue('ownerType', event.target.value)} > } name="ownerType" label="Owner" /> } name="ownerType" label="Vendor" /> } name="ownerType" label="Attorney" /> } name="ownerType" label="Real Estate Agent" /> Password { setFieldValue('password', event.target.value); setPassword(event.target.value); }} type={showPassword ? 'text' : 'password'} id="password" InputProps={{ endAdornment: ( {showPassword ? ( ) : ( )} ), }} /> {/**/} Confirm Password setFieldValue('password2', event.target.value)} type={showPassword2 ? 'text' : 'password'} id="password" InputProps={{ endAdornment: ( {showPassword ? ( ) : ( )} ), }} />
)}
Already have an account ?{' '} theme.typography.body1.fontSize} > Log in
} > Signup banner
); }; export default SignUp;