import { LayoutWithoutSearch } from "@/components/Layout"; import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; import { useState } from "react"; import { useNavigate } from "react-router"; import { treaty } from "@elysiajs/eden"; import type { App } from "@backend/src"; // @ts-expect-error anyway... const app = treaty(import.meta.env.VITE_API_URL!); export default function Login() { const navigate = useNavigate(); const [formData, setFormData] = useState({ username: "", password: "", }); const [isLoading, setIsLoading] = useState(false); const [error, setError] = useState(""); const handleChange = (e: React.ChangeEvent) => { const { name, value } = e.target; setFormData((prev) => ({ ...prev, [name]: value, })); setError(""); }; const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); setIsLoading(true); setError(""); try { const { data, error } = await app.auth.session.post(formData); if (data) { localStorage.setItem("sessionID", data.sessionID); navigate("/", { replace: true }); } else { setError(error?.value?.message || "登录失败"); } } catch (err) { setError("网络错误,请稍后重试"); console.error("Login error:", err); } finally { setIsLoading(false); } }; return (

登录

{error && (
{error}
)}
); }