import {Link, useNavigate} from "react-router-dom"; import styles from './RegisterForm.module.css'; import {useRef, useState} from 'react'; import {registerUser} from "../../api/AuthApi.ts"; const RegisterForm = () => { const [focused, setFocused] = useState({ firstName: false, lastName: false, email: false, password: false }); const [error, setError] = useState(null); const nameRef = useRef(null); const surnameRef = useRef(null); const emailRef = useRef(null); const passwordRef = useRef(null); const navigate = useNavigate(); const handleSubmit = async (event: React.FormEvent) => { event.preventDefault(); const firstName = nameRef.current?.value ?? ''; const lastName = surnameRef.current?.value ?? ''; const email = emailRef.current?.value ?? ''; const password = passwordRef.current?.value ?? ''; const username = firstName + lastName || ''; setError(null); try{ if (email === '' || password === '' || firstName === '' || lastName === '') { setError('Заполните все поля'); } else{ const responseData = await registerUser({username, firstName, lastName, email, password}); if (responseData && !responseData.error) { console.log('Регистрация успешна'); localStorage.setItem("user", JSON.stringify(responseData.user)); navigate('/my-surveys', {replace: true}); } else if (responseData.status === 409){ setError('Аккаунт с такой почтой уже зарегистрирован'); } } } catch (err) { if (err instanceof Error) { if (err.message.includes('409')) { setError('Аккаунт с такой почтой уже зарегистрирован'); } else { setError('Произошла ошибка при регистрации'); } } else { setError('Неизвестная ошибка'); } } } const handleEmailChange = () => { if (error) { setError(null); } }; return (

Регистрация

setFocused({ ...focused, firstName: true })} onBlur={() => setFocused({ ...focused, firstName: false })} style={{ color: focused.firstName ? 'black' : 'inherit' }} /> setFocused({ ...focused, lastName: true })} onBlur={() => setFocused({ ...focused, lastName: false })} style={{ color: focused.lastName ? 'black' : 'inherit' }} />
setFocused({ ...focused, email: true })} onBlur={() => setFocused({ ...focused, email: false })} style={{ color: focused.email ? 'black' : 'inherit' }} /> {error &&

{error}

}
setFocused({ ...focused, password: true })} onBlur={() => setFocused({ ...focused, password: false })} style={{ color: focused.password ? 'black' : 'inherit' }} />

Уже с нами? Войдите!

); } export default RegisterForm;