11"use client" ;
22
3- import React , { useState , useEffect } from "react" ;
3+ import React , { useState , useEffect , useRef } from "react" ;
44import { useRouter } from "next/navigation" ;
55import { useTranslation } from "react-i18next" ;
66
@@ -27,6 +27,8 @@ export default function KnowledgeSetupPage() {
2727 const router = useRouter ( ) ;
2828 const { t } = useTranslation ( ) ;
2929 const { user, isLoading : userLoading , isSpeedMode } = useAuth ( ) ;
30+ const canAccessProtectedData = isSpeedMode || ( ! userLoading && ! ! user ) ;
31+ const sessionExpiredTriggeredRef = useRef ( false ) ;
3032
3133 const [ connectionStatus , setConnectionStatus ] = useState < ConnectionStatus > (
3234 CONNECTION_STATUS . PROCESSING
@@ -37,19 +39,29 @@ export default function KnowledgeSetupPage() {
3739 // Check login status and permission
3840 // Trigger SESSION_EXPIRED event to show "Login Expired" modal instead of directly opening login modal
3941 useEffect ( ( ) => {
40- if ( ! isSpeedMode && ! userLoading && ! user ) {
42+ if ( isSpeedMode ) {
43+ sessionExpiredTriggeredRef . current = false ;
44+ return ;
45+ }
46+
47+ if ( user ) {
48+ sessionExpiredTriggeredRef . current = false ;
49+ return ;
50+ }
51+
52+ if ( ! userLoading && ! sessionExpiredTriggeredRef . current ) {
53+ sessionExpiredTriggeredRef . current = true ;
4154 window . dispatchEvent (
4255 new CustomEvent ( EVENTS . SESSION_EXPIRED , {
4356 detail : { message : "Session expired, please sign in again" } ,
4457 } )
4558 ) ;
46- return ;
4759 }
4860 } , [ isSpeedMode , user , userLoading ] ) ;
4961
5062 // Check the connection status when the page is initialized
5163 useEffect ( ( ) => {
52- if ( ! ( isSpeedMode || user ) ) return ;
64+ if ( ! canAccessProtectedData ) return ;
5365 checkModelEngineConnection ( ) ;
5466
5567 // Trigger knowledge base data acquisition when the page is initialized
@@ -72,7 +84,7 @@ export default function KnowledgeSetupPage() {
7284 } ;
7385
7486 loadConfigForNormalUser ( ) ;
75- } , [ isSpeedMode , user ] ) ;
87+ } , [ canAccessProtectedData ] ) ;
7688
7789 // Function to check the ModelEngine connection status
7890 const checkModelEngineConnection = async ( ) => {
@@ -178,16 +190,18 @@ export default function KnowledgeSetupPage() {
178190 nextText = { t ( "setup.navigation.button.next" ) }
179191 completeText = { t ( "setup.navigation.button.complete" ) }
180192 >
181- < motion . div
182- initial = "initial"
183- animate = "in"
184- exit = "out"
185- variants = { pageVariants }
186- transition = { pageTransition }
187- style = { { width : "100%" , height : "100%" } }
188- >
189- < DataConfig isActive = { true } />
190- </ motion . div >
193+ { canAccessProtectedData ? (
194+ < motion . div
195+ initial = "initial"
196+ animate = "in"
197+ exit = "out"
198+ variants = { pageVariants }
199+ transition = { pageTransition }
200+ style = { { width : "100%" , height : "100%" } }
201+ >
202+ < DataConfig isActive = { true } />
203+ </ motion . div >
204+ ) : null }
191205 </ SetupLayout >
192206 ) ;
193207}
0 commit comments