"use client"; import Link from "next/link"; import { useSession, signOut } from "next-auth/react"; import { useState } from "react"; import { usePathname } from "next/navigation"; import PlayerStats from "@/components/profile/PlayerStats"; import { Button, ThemeToggle } from "@/components/ui"; import ChallengeBadge from "./ChallengeBadge"; interface UserData { username: string; avatar: string | null; hp: number; maxHp: number; xp: number; maxXp: number; level: number; score: number; } interface NavigationProps { initialUserData?: UserData | null; initialIsAdmin?: boolean; initialActiveChallengesCount?: number; } export default function Navigation({ initialUserData, initialIsAdmin, initialActiveChallengesCount = 0, }: NavigationProps) { const { data: session } = useSession(); const [isMenuOpen, setIsMenuOpen] = useState(false); const pathname = usePathname(); // Ne pas afficher le profil sur les pages login/register const isAuthPage = pathname === "/login" || pathname === "/register"; // Utiliser initialUserData pour déterminer l'état de connexion pendant l'hydratation // Cela évite le clignottement au reload // Vérifier explicitement que initialUserData n'est pas undefined const isAuthenticated = (initialUserData !== undefined && initialUserData !== null) || session !== null; const isAdmin = initialIsAdmin ?? session?.user?.role === "ADMIN"; return ( ); }