92 lines
2.3 KiB
TypeScript
92 lines
2.3 KiB
TypeScript
import {
|
|
useCallback,
|
|
useMemo,
|
|
} from 'react'
|
|
import { useFeaturesStore } from '@/app/components/base/features/hooks'
|
|
import { WorkflowWithInnerContext } from '@/app/components/workflow'
|
|
import type { WorkflowProps } from '@/app/components/workflow'
|
|
import WorkflowChildren from './workflow-children'
|
|
import {
|
|
useNodesSyncDraft,
|
|
useWorkflowRefreshDraft,
|
|
useWorkflowRun,
|
|
useWorkflowStartRun,
|
|
} from '../hooks'
|
|
|
|
type WorkflowMainProps = Pick<WorkflowProps, 'nodes' | 'edges' | 'viewport'>
|
|
const WorkflowMain = ({
|
|
nodes,
|
|
edges,
|
|
viewport,
|
|
}: WorkflowMainProps) => {
|
|
const featuresStore = useFeaturesStore()
|
|
|
|
const handleWorkflowDataUpdate = useCallback((payload: any) => {
|
|
if (payload.features && featuresStore) {
|
|
const { setFeatures } = featuresStore.getState()
|
|
|
|
setFeatures(payload.features)
|
|
}
|
|
}, [featuresStore])
|
|
|
|
const {
|
|
doSyncWorkflowDraft,
|
|
syncWorkflowDraftWhenPageClose,
|
|
} = useNodesSyncDraft()
|
|
const { handleRefreshWorkflowDraft } = useWorkflowRefreshDraft()
|
|
const {
|
|
handleBackupDraft,
|
|
handleLoadBackupDraft,
|
|
handleRestoreFromPublishedWorkflow,
|
|
handleRun,
|
|
handleStopRun,
|
|
} = useWorkflowRun()
|
|
const {
|
|
handleStartWorkflowRun,
|
|
handleWorkflowStartRunInChatflow,
|
|
handleWorkflowStartRunInWorkflow,
|
|
} = useWorkflowStartRun()
|
|
|
|
const hooksStore = useMemo(() => {
|
|
return {
|
|
syncWorkflowDraftWhenPageClose,
|
|
doSyncWorkflowDraft,
|
|
handleRefreshWorkflowDraft,
|
|
handleBackupDraft,
|
|
handleLoadBackupDraft,
|
|
handleRestoreFromPublishedWorkflow,
|
|
handleRun,
|
|
handleStopRun,
|
|
handleStartWorkflowRun,
|
|
handleWorkflowStartRunInChatflow,
|
|
handleWorkflowStartRunInWorkflow,
|
|
}
|
|
}, [
|
|
syncWorkflowDraftWhenPageClose,
|
|
doSyncWorkflowDraft,
|
|
handleRefreshWorkflowDraft,
|
|
handleBackupDraft,
|
|
handleLoadBackupDraft,
|
|
handleRestoreFromPublishedWorkflow,
|
|
handleRun,
|
|
handleStopRun,
|
|
handleStartWorkflowRun,
|
|
handleWorkflowStartRunInChatflow,
|
|
handleWorkflowStartRunInWorkflow,
|
|
])
|
|
|
|
return (
|
|
<WorkflowWithInnerContext
|
|
nodes={nodes}
|
|
edges={edges}
|
|
viewport={viewport}
|
|
onWorkflowDataUpdate={handleWorkflowDataUpdate}
|
|
hooksStore={hooksStore}
|
|
>
|
|
<WorkflowChildren />
|
|
</WorkflowWithInnerContext>
|
|
)
|
|
}
|
|
|
|
export default WorkflowMain
|