"use client"; import { useEffect, useState } from "react"; import Link from "next/link"; interface InvitationBadgeProps { initialCount?: number; onNavigate?: () => void; } export default function InvitationBadge({ initialCount = 0, onNavigate, }: InvitationBadgeProps) { 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 invitations (déclenché après acceptation/refus) useEffect(() => { const handleRefreshInvitations = async () => { try { const response = await fetch("/api/invitations/pending-count"); const data = await response.json(); setCount(data.count || 0); } catch (error) { console.error("Error fetching pending invitations count:", error); } }; window.addEventListener("refreshInvitations", handleRefreshInvitations); return () => { window.removeEventListener("refreshInvitations", handleRefreshInvitations); }; }, []); return ( (e.currentTarget.style.color = "var(--accent-color)") } onMouseLeave={(e) => (e.currentTarget.style.color = "var(--foreground)")} title={ count > 0 ? `${count} action${count > 1 ? "s" : ""} en attente (invitations et demandes)` : "Maisons" } > MAISONS {count > 0 && ( {count > 9 ? "9+" : count} )} ); }