import { type Component, createSignal } from "solid-js"; import { useNavigate } from "@solidjs/router"; import { useAuth } from "@/context/AuthContext"; import { authApi } from "@/api/auth"; interface LoginFormProps { onSwitchToRegister: () => void; } const LoginForm: Component = (props) => { const [error, setError] = createSignal(""); const [isLoading, setIsLoading] = createSignal(false); const navigate = useNavigate(); const { login } = useAuth(); const [loginUsername, setLoginUsername] = createSignal(""); const [loginPassword, setLoginPassword] = createSignal(""); const handleLogin = async (e: Event) => { e.preventDefault(); setError(""); setIsLoading(true); try { const response = await authApi.login({ username: loginUsername().trim(), password: loginPassword(), }); login(response); navigate("/"); } catch (err) { setError( err instanceof Error ? err.message : "Error has occurred while logging in. Please try again.", ); } finally { setIsLoading(false); } }; return (
{error() && (
{error()}
)}
setLoginUsername(e.currentTarget.value)} />
setLoginPassword(e.currentTarget.value)} />
Don't have an account?
); }; export default LoginForm;