"use client"; import { useEffect, useState } from "react"; import Link from "next/link"; interface ChallengeBadgeProps { initialCount?: number; onNavigate?: () => void; } export default function ChallengeBadge({ initialCount = 0, onNavigate, }: ChallengeBadgeProps) { const [count, setCount] = useState(initialCount); // Utiliser le count initial (déjà récupéré côté serveur) useEffect(() => { setCount(initialCount); }, [initialCount]); // Écouter les événements de refresh des défis (déclenché après acceptation/annulation) useEffect(() => { const handleRefreshChallenges = async () => { try { const response = await fetch("/api/challenges/active-count"); const data = await response.json(); setCount(data.count || 0); } catch (error) { console.error("Error fetching active challenges count:", error); } }; window.addEventListener("refreshChallenges", handleRefreshChallenges); return () => { window.removeEventListener("refreshChallenges", handleRefreshChallenges); }; }, []); return ( (e.currentTarget.style.color = "var(--accent-color)") } onMouseLeave={(e) => (e.currentTarget.style.color = "var(--foreground)")} title={ count > 0 ? `${count} défi${count > 1 ? "s" : ""} actif${count > 1 ? "s" : ""}` : "Défis" } > DÉFIS {count > 0 && ( {count > 9 ? "9+" : count} )} ); }