diff --git a/web/app/components/workflow-app/hooks/use-workflow-init.ts b/web/app/components/workflow-app/hooks/use-workflow-init.ts
index db9be7dfc2..05cd93ca25 100644
--- a/web/app/components/workflow-app/hooks/use-workflow-init.ts
+++ b/web/app/components/workflow-app/hooks/use-workflow-init.ts
@@ -56,6 +56,7 @@ export const useWorkflowInit = () => {
} = useWorkflowConfig('/files/upload', handleUpdateWorkflowFileUploadConfig)
const handleGetInitialWorkflowData = useCallback(async () => {
+ setIsLoading(true)
try {
const res = await fetchWorkflowDraft(`/apps/${appDetail.id}/workflows/draft`)
setData(res)
@@ -116,6 +117,7 @@ export const useWorkflowInit = () => {
useEffect(() => {
handleGetInitialWorkflowData()
+ // eslint-disable-next-line react-hooks/exhaustive-deps
}, [])
const handleFetchPreloadData = useCallback(async () => {
@@ -156,5 +158,6 @@ export const useWorkflowInit = () => {
data,
isLoading: isLoading || isFileUploadConfigLoading,
fileUploadConfigResponse,
+ reload: handleGetInitialWorkflowData,
}
}
diff --git a/web/app/components/workflow-app/index.tsx b/web/app/components/workflow-app/index.tsx
index 318666131b..9005f2da24 100644
--- a/web/app/components/workflow-app/index.tsx
+++ b/web/app/components/workflow-app/index.tsx
@@ -40,16 +40,23 @@ import {
import { createWorkflowSlice } from './store/workflow/workflow-slice'
const WorkflowAppWithAdditionalContext = () => {
- const [viewType, setViewType] = useState(ViewType.graph)
-
const {
data,
isLoading,
fileUploadConfigResponse,
+ reload,
} = useWorkflowInit()
const workflowStore = useWorkflowStore()
const { isLoadingCurrentWorkspace, currentWorkspace } = useAppContext()
+ const [viewType, doSetViewType] = useState(ViewType.graph)
+ const setViewType = (type: ViewType) => {
+ doSetViewType(type)
+ if (type === ViewType.graph) {
+ reload()
+ }
+ }
+
// Initialize trigger status at application level
const { setTriggerStatuses } = useTriggerStatusStore()
const appDetail = useAppStore(s => s.appDetail)
@@ -164,7 +171,21 @@ const WorkflowAppWithAdditionalContext = () => {
})
}, [replayRunId, workflowStore, getWorkflowRunAndTraceUrl])
- if (!data || isLoading || isLoadingCurrentWorkspace || !currentWorkspace.id) {
+ const isDataReady = !(!data || isLoading || isLoadingCurrentWorkspace || !currentWorkspace.id)
+ const GraphMain = useMemo(() => {
+ if (!isDataReady)
+ return null
+
+ return (
+