import { redirect } from "next/navigation";
import { supabaseServer } from "@/lib/supabase/server";

async function login(fd: FormData) {
  "use server";
  const db = await supabaseServer();
  const { error } = await db.auth.signInWithPassword({
    email: String(fd.get("email") ?? "").trim(),
    password: String(fd.get("password") ?? ""),
  });
  if (error) redirect("/login?e=1");
  redirect("/");
}

async function logout() {
  "use server";
  const db = await supabaseServer();
  await db.auth.signOut();
  redirect("/login");
}

const MSG: Record<string, string> = {
  "1": "Email atau password salah.",
  "2": "Akun ini belum terhubung ke perusahaan mana pun. Hubungi admin.",
  "3": "Perusahaan ini sedang nonaktif. Hubungi admin.",
};

export default async function LoginPage({ searchParams }: { searchParams: Promise<{ e?: string }> }) {
  const { e } = await searchParams;
  const db = await supabaseServer();
  const {
    data: { user },
  } = await db.auth.getUser();
  if (user && !e) redirect("/");

  return (
    <div className="login">
      <h1>WA Tracker</h1>
      {e && MSG[e] && <div className="alert">{MSG[e]}</div>}
      {user && e !== "1" ? (
        <form action={logout}>
          <button className="btn">Keluar</button>
        </form>
      ) : (
        <form action={login} className="card">
          <label htmlFor="email">Email</label>
          <input id="email" name="email" type="email" required autoComplete="email" />
          <label htmlFor="password">Password</label>
          <input id="password" name="password" type="password" required autoComplete="current-password" />
          <p>
            <button className="btn">Masuk</button>
          </p>
        </form>
      )}
    </div>
  );
}
