dify
This commit is contained in:
44
dify/web/hooks/use-document-title.ts
Normal file
44
dify/web/hooks/use-document-title.ts
Normal file
@@ -0,0 +1,44 @@
|
||||
'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)
|
||||
}
|
||||
Reference in New Issue
Block a user