fix: unexpected redirection when landing at workflow (#22932)

This commit is contained in:
KVOJJJin
2025-07-25 08:48:47 +08:00
committed by GitHub
parent d6b980a2dd
commit cff6a488f8
3 changed files with 9 additions and 8 deletions

View File

@@ -42,7 +42,7 @@ const AppDetailLayout: FC<IAppDetailLayoutProps> = (props) => {
const pathname = usePathname() const pathname = usePathname()
const media = useBreakpoints() const media = useBreakpoints()
const isMobile = media === MediaType.mobile const isMobile = media === MediaType.mobile
const { isCurrentWorkspaceEditor, isLoadingCurrentWorkspace } = useAppContext() const { isCurrentWorkspaceEditor, isLoadingCurrentWorkspace, currentWorkspace } = useAppContext()
const { appDetail, setAppDetail, setAppSiderbarExpand } = useStore(useShallow(state => ({ const { appDetail, setAppDetail, setAppSiderbarExpand } = useStore(useShallow(state => ({
appDetail: state.appDetail, appDetail: state.appDetail,
setAppDetail: state.setAppDetail, setAppDetail: state.setAppDetail,
@@ -106,7 +106,6 @@ const AppDetailLayout: FC<IAppDetailLayoutProps> = (props) => {
// if ((appDetail.mode === 'advanced-chat' || appDetail.mode === 'workflow') && (pathname).endsWith('workflow')) // if ((appDetail.mode === 'advanced-chat' || appDetail.mode === 'workflow') && (pathname).endsWith('workflow'))
// setAppSiderbarExpand('collapse') // setAppSiderbarExpand('collapse')
} }
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [appDetail, isMobile]) }, [appDetail, isMobile])
useEffect(() => { useEffect(() => {
@@ -120,11 +119,10 @@ const AppDetailLayout: FC<IAppDetailLayoutProps> = (props) => {
}).finally(() => { }).finally(() => {
setIsLoadingAppDetail(false) setIsLoadingAppDetail(false)
}) })
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [appId, pathname]) }, [appId, pathname])
useEffect(() => { useEffect(() => {
if (!appDetailRes || isLoadingCurrentWorkspace || isLoadingAppDetail) if (!appDetailRes || !currentWorkspace.id || isLoadingCurrentWorkspace || isLoadingAppDetail)
return return
const res = appDetailRes const res = appDetailRes
// redirection // redirection
@@ -143,7 +141,6 @@ const AppDetailLayout: FC<IAppDetailLayoutProps> = (props) => {
setAppDetail({ ...res, enable_sso: false }) setAppDetail({ ...res, enable_sso: false })
setNavigation(getNavigations(appId, isCurrentWorkspaceEditor, res.mode)) setNavigation(getNavigations(appId, isCurrentWorkspaceEditor, res.mode))
} }
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [appDetailRes, isCurrentWorkspaceEditor, isLoadingAppDetail, isLoadingCurrentWorkspace]) }, [appDetailRes, isCurrentWorkspaceEditor, isLoadingAppDetail, isLoadingCurrentWorkspace])
useUnmount(() => { useUnmount(() => {

View File

@@ -82,6 +82,7 @@ import { supportFunctionCall } from '@/utils/tool-call'
import { MittProvider } from '@/context/mitt-context' import { MittProvider } from '@/context/mitt-context'
import { fetchAndMergeValidCompletionParams } from '@/utils/completion-params' import { fetchAndMergeValidCompletionParams } from '@/utils/completion-params'
import Toast from '@/app/components/base/toast' import Toast from '@/app/components/base/toast'
import { useAppContext } from '@/context/app-context'
type PublishConfig = { type PublishConfig = {
modelConfig: ModelConfig modelConfig: ModelConfig
@@ -91,6 +92,8 @@ type PublishConfig = {
const Configuration: FC = () => { const Configuration: FC = () => {
const { t } = useTranslation() const { t } = useTranslation()
const { notify } = useContext(ToastContext) const { notify } = useContext(ToastContext)
const { isLoadingCurrentWorkspace, currentWorkspace } = useAppContext()
const { appDetail, showAppConfigureFeaturesModal, setAppSiderbarExpand, setShowAppConfigureFeaturesModal } = useAppStore(useShallow(state => ({ const { appDetail, showAppConfigureFeaturesModal, setAppSiderbarExpand, setShowAppConfigureFeaturesModal } = useAppStore(useShallow(state => ({
appDetail: state.appDetail, appDetail: state.appDetail,
setAppSiderbarExpand: state.setAppSiderbarExpand, setAppSiderbarExpand: state.setAppSiderbarExpand,
@@ -693,7 +696,6 @@ const Configuration: FC = () => {
setHasFetchedDetail(true) setHasFetchedDetail(true)
}) })
})() })()
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [appId]) }, [appId])
const promptEmpty = (() => { const promptEmpty = (() => {
@@ -843,7 +845,7 @@ const Configuration: FC = () => {
setAppSiderbarExpand('collapse') setAppSiderbarExpand('collapse')
} }
if (isLoading) { if (isLoading || isLoadingCurrentWorkspace || !currentWorkspace.id) {
return <div className='flex h-full items-center justify-center'> return <div className='flex h-full items-center justify-center'>
<Loading type='area' /> <Loading type='area' />
</div> </div>

View File

@@ -19,6 +19,7 @@ import { FeaturesProvider } from '@/app/components/base/features'
import type { Features as FeaturesData } from '@/app/components/base/features/types' import type { Features as FeaturesData } from '@/app/components/base/features/types'
import { FILE_EXTS } from '@/app/components/base/prompt-editor/constants' import { FILE_EXTS } from '@/app/components/base/prompt-editor/constants'
import { fetchFileUploadConfig } from '@/service/common' import { fetchFileUploadConfig } from '@/service/common'
import { useAppContext } from '@/context/app-context'
import WorkflowWithDefaultContext from '@/app/components/workflow' import WorkflowWithDefaultContext from '@/app/components/workflow'
import { import {
WorkflowContextProvider, WorkflowContextProvider,
@@ -31,6 +32,7 @@ const WorkflowAppWithAdditionalContext = () => {
data, data,
isLoading, isLoading,
} = useWorkflowInit() } = useWorkflowInit()
const { isLoadingCurrentWorkspace, currentWorkspace } = useAppContext()
const { data: fileUploadConfigResponse } = useSWR({ url: '/files/upload' }, fetchFileUploadConfig) const { data: fileUploadConfigResponse } = useSWR({ url: '/files/upload' }, fetchFileUploadConfig)
const nodesData = useMemo(() => { const nodesData = useMemo(() => {
@@ -46,7 +48,7 @@ const WorkflowAppWithAdditionalContext = () => {
return [] return []
}, [data]) }, [data])
if (!data || isLoading) { if (!data || isLoading || isLoadingCurrentWorkspace || !currentWorkspace.id) {
return ( return (
<div className='relative flex h-full w-full items-center justify-center'> <div className='relative flex h-full w-full items-center justify-center'>
<Loading /> <Loading />