import { useState, FormEvent } from 'react'; import styles from '../styles/Auth.module.css'; import { Link } from 'react-router-dom'; import { useNavigate } from 'react-router-dom'; import axios from 'axios'; import Navbar from './Navbar'; function Signup() { document.title = 'LinkLogger | Create Account'; const [username, setUsername] = useState(''); const [password, setPassword] = useState(''); const [passwordConfirm, setPasswordConfirm] = useState(''); const [isSubmitting, setIsSubmitting] = useState(false); const [error, setError] = useState(null); const navigate = useNavigate(); const handleSubmit = async (e: FormEvent) => { e.preventDefault(); setIsSubmitting(true); if (password !== passwordConfirm) { setPassword(''); setPasswordConfirm(''); return setError('Passwords do not match.'); } try { const res = await axios.post( '/api/users/register', new URLSearchParams({ username: username, password: password, }), { headers: { 'Content-Type': 'application/x-www-form-urlencoded', }, } ); if (res.status === 200) { navigate('/login'); } } catch (error: unknown) { if (axios.isAxiosError(error)) { const customErrorMessage = error.response?.data?.detail || null; setUsername(''); setPassword(''); setPasswordConfirm(''); setError(customErrorMessage || 'An error occurred. Please try again.'); } else { setUsername(''); setPassword(''); setPasswordConfirm(''); setError('Unknown error. Please try again.'); } } finally { setIsSubmitting(false); } }; return ( <>

Create Account

{error}


setUsername(e.target.value)} required /> setPassword(e.target.value)} required /> setPasswordConfirm(e.target.value)} required />

Already have an account?{' '} Log in here.

); } export default Signup;