| 1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- 'use client'
- 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)
- const systemFeatures = useGlobalPublicStore(s => s.systemFeatures)
- const prefix = title ? `${title} - ` : ''
- let titleStr = ''
- let favicon = ''
- if (isPending === false) {
- if (systemFeatures.branding.enabled) {
- titleStr = `${prefix}${systemFeatures.branding.application_title}`
- favicon = systemFeatures.branding.favicon
- }
- else {
- titleStr = `${prefix}Dify`
- favicon = `${basePath}/favicon.ico`
- }
- }
- 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)
- }
|