"use client";

import { useEffect } from "react";
import { usePathname, useRouter } from "next/navigation";
import { PremiumLoader } from "@/components/motion/PremiumLoader";
import { useAuthHydration } from "@/hooks/useAuthHydration";
import { isDemoAuthToken } from "@/lib/demoAuth";
import { useAuthStore } from "@/store/authStore";

export default function DashboardRootLayout({
  children,
}: {
  children: React.ReactNode;
}) {
  const router = useRouter();
  const pathname = usePathname();
  const hydrated = useAuthHydration();
  const user = useAuthStore((s) => s.user);
  const token = useAuthStore((s) => s.token);
  const clearAuth = useAuthStore((s) => s.clearAuth);
  const isAuthenticated = Boolean(user && token && !isDemoAuthToken(token));

  useEffect(() => {
    if (!hydrated) return;

    if (isDemoAuthToken(token)) {
      clearAuth();
      router.replace("/admin/login");
      return;
    }

    if (!isAuthenticated) {
      const redirect = encodeURIComponent(pathname || "/dashboard");
      router.replace(`/login?redirect=${redirect}`);
    }
  }, [hydrated, isAuthenticated, token, clearAuth, router, pathname]);

  if (!hydrated) {
    return <PremiumLoader label="Preparando seu painel..." />;
  }

  if (!isAuthenticated) {
    return <PremiumLoader label="Redirecionando para login..." />;
  }

  return children;
}
