You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

workflow-main.tsx 2.3KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. import {
  2. useCallback,
  3. useMemo,
  4. } from 'react'
  5. import { useFeaturesStore } from '@/app/components/base/features/hooks'
  6. import { WorkflowWithInnerContext } from '@/app/components/workflow'
  7. import type { WorkflowProps } from '@/app/components/workflow'
  8. import WorkflowChildren from './workflow-children'
  9. import {
  10. useNodesSyncDraft,
  11. useWorkflowRefreshDraft,
  12. useWorkflowRun,
  13. useWorkflowStartRun,
  14. } from '../hooks'
  15. type WorkflowMainProps = Pick<WorkflowProps, 'nodes' | 'edges' | 'viewport'>
  16. const WorkflowMain = ({
  17. nodes,
  18. edges,
  19. viewport,
  20. }: WorkflowMainProps) => {
  21. const featuresStore = useFeaturesStore()
  22. const handleWorkflowDataUpdate = useCallback((payload: any) => {
  23. if (payload.features && featuresStore) {
  24. const { setFeatures } = featuresStore.getState()
  25. setFeatures(payload.features)
  26. }
  27. }, [featuresStore])
  28. const {
  29. doSyncWorkflowDraft,
  30. syncWorkflowDraftWhenPageClose,
  31. } = useNodesSyncDraft()
  32. const { handleRefreshWorkflowDraft } = useWorkflowRefreshDraft()
  33. const {
  34. handleBackupDraft,
  35. handleLoadBackupDraft,
  36. handleRestoreFromPublishedWorkflow,
  37. handleRun,
  38. handleStopRun,
  39. } = useWorkflowRun()
  40. const {
  41. handleStartWorkflowRun,
  42. handleWorkflowStartRunInChatflow,
  43. handleWorkflowStartRunInWorkflow,
  44. } = useWorkflowStartRun()
  45. const hooksStore = useMemo(() => {
  46. return {
  47. syncWorkflowDraftWhenPageClose,
  48. doSyncWorkflowDraft,
  49. handleRefreshWorkflowDraft,
  50. handleBackupDraft,
  51. handleLoadBackupDraft,
  52. handleRestoreFromPublishedWorkflow,
  53. handleRun,
  54. handleStopRun,
  55. handleStartWorkflowRun,
  56. handleWorkflowStartRunInChatflow,
  57. handleWorkflowStartRunInWorkflow,
  58. }
  59. }, [
  60. syncWorkflowDraftWhenPageClose,
  61. doSyncWorkflowDraft,
  62. handleRefreshWorkflowDraft,
  63. handleBackupDraft,
  64. handleLoadBackupDraft,
  65. handleRestoreFromPublishedWorkflow,
  66. handleRun,
  67. handleStopRun,
  68. handleStartWorkflowRun,
  69. handleWorkflowStartRunInChatflow,
  70. handleWorkflowStartRunInWorkflow,
  71. ])
  72. return (
  73. <WorkflowWithInnerContext
  74. nodes={nodes}
  75. edges={edges}
  76. viewport={viewport}
  77. onWorkflowDataUpdate={handleWorkflowDataUpdate}
  78. hooksStore={hooksStore}
  79. >
  80. <WorkflowChildren />
  81. </WorkflowWithInnerContext>
  82. )
  83. }
  84. export default WorkflowMain