"use client"; import { useEffect } from "react"; import { useRouter } from "next/navigation"; import { parseCommissionMessageEvent } from "@/lib/commission/message-event"; import { keepCommissionTitle } from "./keep-title"; export function CommissionLiveRefresh({ endpoint, userId }: { endpoint: string; userId: string }) { const router = useRouter(); useEffect(() => { const originalTitle = document.title; let managedTitle = ""; let unread = 0; const stopKeepingTitle = keepCommissionTitle(() => managedTitle || originalTitle); const source = new EventSource(endpoint); const refresh = (event: Event) => { const message = parseCommissionMessageEvent((event as MessageEvent).data); if (message && message.authorId !== userId) { unread += 1; managedTitle = `(${unread}) ${message.ticketTitle}`; document.title = managedTitle; } router.refresh(); }; const opened = () => router.refresh(); source.addEventListener("changed", refresh); source.addEventListener("open", opened); return () => { source.removeEventListener("changed", refresh); source.removeEventListener("open", opened); source.close(); stopKeepingTitle(); if (managedTitle && document.title === managedTitle) document.title = originalTitle; }; }, [endpoint, userId, router]); return null; }