fix: webapp variable input & app unavailable status (#2405)

This commit is contained in:
zxhlyh
2024-02-06 13:43:09 +08:00
committed by GitHub
parent 843280f82b
commit d8de2017b5
5 changed files with 87 additions and 22 deletions

View File

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