|
@@ -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
|
|
|
|