"use client"; import { useState, useTransition } from "react"; import { useRouter } from "next/navigation"; import { useForm } from "react-hook-form"; import { zodResolver } from "@hookform/resolvers/zod"; import { loginViaAccessKeys } from "@/apicalls/login/login"; import { z } from "zod"; const loginSchema = z.object({ email: z.string().email("Invalid email address"), password: z.string().min(5, "Password must be at least 5 characters"), remember_me: z.boolean().optional().default(false), }); type LoginFormData = { email: string; password: string; remember_me?: boolean; }; function Login() { // Open transition for form login const [isPending, startTransition] = useTransition(); const [error, setError] = useState(null); const [jsonText, setJsonText] = useState(null); const Router = useRouter(); const { register, formState: { errors }, handleSubmit, } = useForm({ resolver: zodResolver(loginSchema), }); const onSubmit = async (data: LoginFormData) => { try { startTransition(() => { try { loginViaAccessKeys({ accessKey: data.email, password: data.password, rememberMe: false, }) .then((result: any) => { const dataResponse = result?.data; if (dataResponse?.access_token) { setJsonText(JSON.stringify(dataResponse)); setTimeout(() => { Router.push("/auth/select"); }, 2000); } return dataResponse; }) .catch(() => {}); } catch (error) {} }); } catch (error) { console.error("Login error:", error); setError("An error occurred during login"); } }; return ( <>

Login

{errors.email && (

{errors.email.message}

)}
{errors.password && (

{errors.password.message}

)}
{error && (

{error}

)}
{jsonText && (

Response Data

{Object.entries(JSON.parse(jsonText)).map(([key, value]) => (
{key}: {typeof value === "object" ? JSON.stringify(value) : value?.toString() || "N/A"}
))}
)}
); } export default Login;