From 34c05bcd1aa12d67714692c2cd4bceb3a65d19fe Mon Sep 17 00:00:00 2001 From: zxhlyh Date: Mon, 15 Sep 2025 11:37:27 +0800 Subject: [PATCH] fix: favicon --- web/hooks/use-document-title.ts | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/web/hooks/use-document-title.ts b/web/hooks/use-document-title.ts index 23789129d0..10a167a9ea 100644 --- a/web/hooks/use-document-title.ts +++ b/web/hooks/use-document-title.ts @@ -2,6 +2,7 @@ import { useGlobalPublicStore } from '@/context/global-public-context' import { useFavicon, useTitle } from 'ahooks' import { basePath } from '@/utils/var' +import { useEffect } from 'react' export default function useDocumentTitle(title: string) { const isPending = useGlobalPublicStore(s => s.isGlobalPending) @@ -20,5 +21,24 @@ export default function useDocumentTitle(title: string) { } } useTitle(titleStr) + useEffect(() => { + let apple: HTMLLinkElement | null = null + if (systemFeatures.branding.favicon) { + document + .querySelectorAll( + 'link[rel=\'icon\'], link[rel=\'shortcut icon\'], link[rel=\'apple-touch-icon\'], link[rel=\'mask-icon\']', + ) + .forEach(n => n.parentNode?.removeChild(n)) + + apple = document.createElement('link') + apple.rel = 'apple-touch-icon' + apple.href = systemFeatures.branding.favicon + document.head.appendChild(apple) + } + + return () => { + apple?.remove() + } + }, [systemFeatures.branding.favicon]) useFavicon(favicon) }