import { useState, type FormEvent } from 'react'; import { Navigate } from 'react-router-dom'; import { useAuth } from '../context/AuthContext'; import { ApiError } from '../api/client'; export function LoginPage() { const { login, user, needsSetup } = useAuth(); const [username, setUsername] = useState(''); const [password, setPassword] = useState(''); const [error, setError] = useState(null); const [submitting, setSubmitting] = useState(false); if (needsSetup) return ; if (user) return ; async function handleSubmit(e: FormEvent) { e.preventDefault(); setError(null); setSubmitting(true); try { await login(username, password); } catch (err) { setError( err instanceof ApiError && err.status === 401 ? 'Invalid username or password.' : 'Something went wrong. Please try again.', ); } finally { setSubmitting(false); } } return (

CityTracker

{error &&

{error}

}
); }