import { createFileRoute, useNavigate } from "@tanstack/react-router"; import { useState } from "react"; import { useAuth, useLogin, useSetup } from "../hooks/useAuth"; export const Route = createFileRoute("/login")({ component: LoginPage, }); function LoginPage() { const navigate = useNavigate(); const { data: auth } = useAuth(); const login = useLogin(); const setup = useSetup(); const [username, setUsername] = useState(""); const [password, setPassword] = useState(""); const [error, setError] = useState(""); const isSetup = auth?.setupRequired ?? false; async function handleSubmit(e: React.FormEvent) { e.preventDefault(); setError(""); try { if (isSetup) { await setup.mutateAsync({ username, password }); } else { await login.mutateAsync({ username, password }); } navigate({ to: "/" }); } catch (err) { setError((err as Error).message); } } const isPending = login.isPending || setup.isPending; return (