Files
gunshiz 95c45841e7
CI / Verify (push) Failing after 1m4s
CI / Build immutable images and deploy (push) Skipped
feat : update i guess
2026-10-03 15:47:47 +07:00

36 lines
1.4 KiB
TypeScript

"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<string>).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;
}