| 123456789101112131415161718192021222324 |
- import { useEffect } from "react";
- import { updateFaviconWithBadge, updateFavicon, DEFAULT_FAVICON } from "@/utils/favicon";
- /**
- * 根据未读数更新页面标题和 favicon 红色数字徽章
- * @param unreadCount 未读消息数
- * @param baseTitle 基础标题(如 "AI-CS"),未读 > 0 时标题为 "(n) baseTitle"
- */
- export function usePageTitle(unreadCount: number, baseTitle: string) {
- useEffect(() => {
- const title = unreadCount > 0 ? `(${unreadCount}) ${baseTitle}` : baseTitle;
- document.title = title;
- if (unreadCount > 0) {
- // 延迟更新 favicon,保证首屏或切回标签时也能刷到
- const t = setTimeout(() => {
- updateFaviconWithBadge(unreadCount);
- }, 100);
- return () => clearTimeout(t);
- } else {
- updateFavicon(DEFAULT_FAVICON);
- }
- }, [unreadCount, baseTitle]);
- }
|