| 
					
				 | 
			
			
				@@ -17,6 +17,7 @@ import type { InstalledApp } from '@/models/explore' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import Loading from '@/app/components/base/loading' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import useBreakpoints, { MediaType } from '@/hooks/use-breakpoints' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import { checkOrSetAccessToken } from '@/app/components/share/utils' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import AppUnavailable from '@/app/components/base/app-unavailable' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 type ChatWithHistoryProps = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   className?: string 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -25,6 +26,7 @@ const ChatWithHistory: FC<ChatWithHistoryProps> = ({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   className, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   const { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    appInfoError, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     appData, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     appInfoLoading, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     appPrevChatList, 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -53,6 +55,12 @@ const ChatWithHistory: FC<ChatWithHistoryProps> = ({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  if (appInfoError) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    return ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      <AppUnavailable /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   return ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     <div className={`h-full flex bg-white ${className} ${isMobile && 'flex-col'}`}> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -100,6 +108,7 @@ const ChatWithHistoryWrap: FC<ChatWithHistoryWrapProps> = ({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   const isMobile = media === MediaType.mobile 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   const { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    appInfoError, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     appInfoLoading, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     appData, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     appParams, 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -132,6 +141,7 @@ const ChatWithHistoryWrap: FC<ChatWithHistoryWrapProps> = ({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   return ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     <ChatWithHistoryContext.Provider value={{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      appInfoError, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       appInfoLoading, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       appData, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       appParams, 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -172,15 +182,32 @@ const ChatWithHistoryWrapWithCheckToken: FC<ChatWithHistoryWrapProps> = ({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   className, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   const [inited, setInited] = useState(false) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  const [appUnavailable, setAppUnavailable] = useState<boolean>(false) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  const [isUnknwonReason, setIsUnknwonReason] = useState<boolean>(false) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   useAsyncEffect(async () => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     if (!inited) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      if (!installedAppInfo) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        await checkOrSetAccessToken() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      if (!installedAppInfo) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          await checkOrSetAccessToken() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        catch (e: any) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          if (e.status === 404) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            setAppUnavailable(true) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            setIsUnknwonReason(true) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            setAppUnavailable(true) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       setInited(true) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   }, []) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  if (appUnavailable) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    return <AppUnavailable isUnknwonReason={isUnknwonReason} /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   if (!inited) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     return null 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 |