@@ -22,9 +22,11 @@ import WebSocketManager from '../utils/websocket';
2222export interface SharedContext {
2323 headerStyle : React . CSSProperties ;
2424 isPhone : boolean ;
25+ siteTitle : string ;
2526 theme : 'vs' | 'vs-dark' ;
2627 user : any ;
2728 reloadUser : ( needLoading ?: boolean ) => void ;
29+ reloadSystemConfig : ( ) => void ;
2830 reloadTheme : ( ) => void ;
2931 systemInfo : TSystemInfo ;
3032}
@@ -45,6 +47,9 @@ export default function () {
4547 const [ user , setUser ] = useState < any > ( { } ) ;
4648 const [ loading , setLoading ] = useState < boolean > ( true ) ;
4749 const [ systemInfo , setSystemInfo ] = useState < TSystemInfo > ( ) ;
50+ const [ siteTitle , setSiteTitle ] = useState (
51+ ( ) => localStorage . getItem ( 'qinglong_panel_title' ) ?. trim ( ) || intl . get ( '青龙' ) ,
52+ ) ;
4853 const [ collapsed , setCollapsed ] = useState ( false ) ;
4954 const [ initLoading , setInitLoading ] = useState < boolean > ( true ) ;
5055 const {
@@ -124,20 +129,18 @@ export default function () {
124129 getUser ( needLoading ) ;
125130 } ;
126131
127- useEffect ( ( ) => {
128- if ( systemInfo && systemInfo . isInitialized && ! user ) {
129- getUser ( ) ;
130- }
131- } , [ location . pathname ] ) ;
132-
133- useEffect ( ( ) => {
134- getHealthStatus ( ) ;
135- } , [ ] ) ;
136-
137- useEffect ( ( ) => {
132+ const reloadSystemConfig = ( ) => {
138133 request
139134 . get ( `${ config . apiPrefix } system/config` )
140135 . then ( ( { data } : any ) => {
136+ const panelTitle = data ?. info ?. panelTitle ?. trim ( ) ;
137+ if ( panelTitle ) {
138+ setSiteTitle ( panelTitle ) ;
139+ localStorage . setItem ( 'qinglong_panel_title' , panelTitle ) ;
140+ } else {
141+ setSiteTitle ( intl . get ( '青龙' ) ) ;
142+ localStorage . removeItem ( 'qinglong_panel_title' ) ;
143+ }
141144 if ( ! data ?. info ?. lang ) {
142145 const browserLang =
143146 localStorage . getItem ( 'lang' ) ||
@@ -149,8 +152,31 @@ export default function () {
149152 }
150153 } )
151154 . catch ( ( ) => { } ) ;
155+ } ;
156+
157+ useEffect ( ( ) => {
158+ if ( systemInfo && systemInfo . isInitialized && ! user ) {
159+ getUser ( ) ;
160+ }
161+ } , [ location . pathname ] ) ;
162+
163+ useEffect ( ( ) => {
164+ getHealthStatus ( ) ;
165+ } , [ ] ) ;
166+
167+ useEffect ( ( ) => {
168+ reloadSystemConfig ( ) ;
152169 } , [ ] ) ;
153170
171+ useEffect ( ( ) => {
172+ if ( ! [ '/login' , '/initialization' , '/error' ] . includes ( location . pathname ) ) {
173+ return ;
174+ }
175+ const title =
176+ ( config . documentTitleMap as any ) [ location . pathname ] || intl . get ( '未找到' ) ;
177+ document . title = `${ title } - ${ siteTitle } ` ;
178+ } , [ location . pathname , siteTitle ] ) ;
179+
154180 useEffect ( ( ) => {
155181 if ( theme === 'vs-dark' ) {
156182 document . body . setAttribute ( 'data-dark' , 'true' ) ;
@@ -229,7 +255,10 @@ export default function () {
229255 theme,
230256 user,
231257 reloadUser,
258+ reloadSystemConfig,
232259 reloadTheme,
260+ siteTitle,
261+ systemInfo,
233262 } }
234263 />
235264 ) ;
@@ -310,7 +339,7 @@ export default function () {
310339 const title =
311340 ( config . documentTitleMap as any ) [ location . pathname ] ||
312341 intl . get ( '未找到' ) ;
313- return `${ title } - ${ intl . get ( '青龙' ) } ` ;
342+ return `${ title } - ${ siteTitle } ` ;
314343 } }
315344 onCollapse = { setCollapsed }
316345 collapsed = { collapsed }
@@ -372,7 +401,9 @@ export default function () {
372401 theme,
373402 user,
374403 reloadUser,
404+ reloadSystemConfig,
375405 reloadTheme,
406+ siteTitle,
376407 systemInfo,
377408 } }
378409 />
0 commit comments