import { defineNuxtRouteMiddleware, navigateTo } from "#app";

function isLoginPath(path: string, name: unknown) {
  const p = (path?.replace(/\/+$/, "") || "/") as string;
  if (p === "/login") return true;
  if (typeof name === "string" && (name === "login" || name.startsWith("login___"))) return true;
  return false;
}

/**
 * Klien: navigasi SPA + redirect `/login` jika sudah login.
 * Proteksi SSR dokumen GET: `server/middleware/00-workpulse-auth-redirect.ts` (302 + `res.end` sinkron).
 */
export default defineNuxtRouteMiddleware((to) => {
  if (import.meta.server) return;

  const { isAuthenticated, initAuth } = useAuth();
  initAuth();

  const onLogin = isLoginPath(to.path, to.name);

  if (!isAuthenticated.value && !onLogin) {
    return navigateTo("/login", { replace: true });
  }
  if (isAuthenticated.value && onLogin) {
    return navigateTo("/", { replace: true });
  }
});
