From bf8b6aacbbfef3df4b56be5e63e8f983d71f9c7c Mon Sep 17 00:00:00 2001 From: Miqdad Date: Sat, 20 Sep 2025 10:32:53 +0700 Subject: fix compile error --- app/login/page.tsx | 223 ++++++++++++++++------------------------------------- 1 file changed, 67 insertions(+), 156 deletions(-) (limited to 'app/login') diff --git a/app/login/page.tsx b/app/login/page.tsx index 5ad699c..9e0a5fe 100644 --- a/app/login/page.tsx +++ b/app/login/page.tsx @@ -1,173 +1,84 @@ "use client"; -import { - Box, - Button, - FormControl, - FormLabel, - TextField, - Typography, -} from "@mui/material"; -import Header from "../lib/camera/component/hedear"; -import odooApi from "../lib/api/odooApi"; -import { getAuth, setAuth } from "../lib/api/auth"; + import { useRouter } from "next/navigation"; -import { useEffect, useState } from "react"; +import { useState } from "react"; +import odooApi from "../lib/api/odooApi"; + +type LoginStatus = { code?: number; description?: string }; +type LoginResult = { token?: string; email?: string; [k: string]: unknown }; +type LoginResponse = { status?: LoginStatus; result?: LoginResult }; -const Login = () => { +export default function LoginPage() { const router = useRouter(); - const [emailError, setEmailError] = useState(false); - const [emailErrorMessage, setEmailErrorMessage] = useState(""); - const [passwordError, setPasswordError] = useState(false); - const [passwordErrorMessage, setPasswordErrorMessage] = useState(""); + const [loading, setLoading] = useState(false); - useEffect(() => { - const token = getAuth(); + const onSubmit = async (e: React.FormEvent) => { + e.preventDefault(); + setLoading(true); - if (token) { - router.push("/"); - } - }, [router]); + const fd = new FormData(e.currentTarget); + + // Narrowing ke string, bukan File/null + const rawEmail = fd.get("email"); + const rawPassword = fd.get("password"); + const email = typeof rawEmail === "string" ? rawEmail.trim() : ""; + const password = typeof rawPassword === "string" ? rawPassword : ""; - const handleSubmit = async (event: React.FormEvent) => { - event.preventDefault(); - if (emailError || passwordError) { + if (!email || !password) { + alert("Email dan password wajib diisi."); + setLoading(false); return; } - const data = new FormData(event.currentTarget); - const email = data.get("email"); - const password = data.get("password"); - + try { - odooApi("POST", "/api/v1/user/login", { - email , - password - }).then((res) => { - const auth = res.result; - if (auth.is_auth) { - setAuth(auth.user); - router.push("/"); - return; - } - switch (auth.reason) { - case "NOT_FOUND": - alert("Email tidak ditemukan"); - break; - case "NOT_ACTIVE": - alert("Akun anda belum aktif"); - break; - } - }); - } catch (error) { - alert("Gagal login, silahkan coba lagi"); - console.log(error); + const res = (await odooApi("POST", "/api/v1/user/login", { + email, + password, + })) as unknown as LoginResponse; + + if (res?.status?.code === 200) { + // Jika kamu punya util setAuth(res.result), panggil di sini. + router.push("/"); + } else { + alert(res?.status?.description || "Login gagal. Periksa email/password."); + } + } catch (err) { + console.error(err); + alert("Terjadi kesalahan saat login."); + } finally { + setLoading(false); } }; - const validateInputs = () => { - const email = document.getElementById("email") as HTMLInputElement; - const password = document.getElementById("password") as HTMLInputElement; - - let isValid = true; + return ( +
+
+

Login

- if (!email.value || !/\S+@\S+\.\S+/.test(email.value)) { - setEmailError(true); - setEmailErrorMessage("Please enter a valid email address."); - isValid = false; - } else { - setEmailError(false); - setEmailErrorMessage(""); - } + - if (!password.value || password.value.length < 6) { - setPasswordError(true); - setPasswordErrorMessage("Password must be at least 6 characters long."); - isValid = false; - } else { - setPasswordError(false); - setPasswordErrorMessage(""); - } + - return isValid; - }; - return ( -
-
-
-
- - Sign in - - - - Email - - - - - Password - - - - - -
-
-
+ +
+
); -}; - -export default Login; +} \ No newline at end of file -- cgit v1.2.3