"use client"; import dynamic from "next/dynamic"; import Link from "next/link"; import { useState } from "react"; import { useRouter, useSearchParams } from "next/navigation"; import { useAuth } from "@/context/AuthContext"; function resolveNextPath(candidate) { if (!candidate || !candidate.startsWith("/")) { return "/"; } if (candidate.startsWith("//") || candidate.startsWith("/login") || candidate.startsWith("/register")) { return "/"; } return candidate; } function LoginPage() { const {login} = useAuth(); const router = useRouter(); const searchParams = useSearchParams(); const [username, setUsername] = useState(""); const [password, setPassword] = useState(""); const [error, setError] = useState(""); const [loading, setLoading] = useState(false); async function handleSubmit(e) { e.preventDefault(); setError(""); setLoading(true); try { await login(username, password); router.push(resolveNextPath(searchParams.get("next"))); } catch (err) { setError(err.message); } finally { setLoading(false); } } return (

Log In

{error &&

{error}

}

Don't have an account?{" "} Register here

); } export default dynamic(() => Promise.resolve(LoginPage), { ssr: false, });