"use client";

import { useEffect, useState, type ReactNode } from "react";
import { useRouter } from "next/navigation";
import PageLoading from "@/components/PageLoading";

function hasAuthToken(): boolean {
  if (typeof window === "undefined") return false;
  try {
    const raw =
      localStorage.getItem("currentUser") || localStorage.getItem("biomket_user");
    if (!raw) return false;
    const user = JSON.parse(raw) as { token?: string; access_token?: string };
    const tok = String(user?.token ?? user?.access_token ?? "").trim();
    return tok.length > 0;
  } catch {
    return false;
  }
}

export default function PrivateRouteGuard({ children }: { children: ReactNode }) {
  const router = useRouter();
  const [allowed, setAllowed] = useState(false);

  useEffect(() => {
    if (!hasAuthToken()) {
      router.replace("/login");
      return;
    }
    setAllowed(true);
  }, [router]);

  if (!allowed) {
    return <PageLoading />;
  }

  return <>{children}</>;
}
