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.

use-pipeline-refresh-draft.ts 1.7KB

6 maanden geleden
5 maanden geleden
3 maanden geleden
6 maanden geleden
5 maanden geleden
5 maanden geleden
6 maanden geleden
5 maanden geleden
3 maanden geleden
3 maanden geleden
3 maanden geleden
3 maanden geleden
5 maanden geleden
6 maanden geleden
12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. import { useCallback } from 'react'
  2. import { useWorkflowStore } from '@/app/components/workflow/store'
  3. import { fetchWorkflowDraft } from '@/service/workflow'
  4. import type { WorkflowDataUpdater } from '@/app/components/workflow/types'
  5. import { useWorkflowUpdate } from '@/app/components/workflow/hooks'
  6. import { processNodesWithoutDataSource } from '../utils'
  7. export const usePipelineRefreshDraft = () => {
  8. const workflowStore = useWorkflowStore()
  9. const { handleUpdateWorkflowCanvas } = useWorkflowUpdate()
  10. const handleRefreshWorkflowDraft = useCallback(() => {
  11. const {
  12. pipelineId,
  13. setSyncWorkflowDraftHash,
  14. setIsSyncingWorkflowDraft,
  15. setEnvironmentVariables,
  16. setEnvSecrets,
  17. } = workflowStore.getState()
  18. setIsSyncingWorkflowDraft(true)
  19. fetchWorkflowDraft(`/rag/pipelines/${pipelineId}/workflows/draft`).then((response) => {
  20. const {
  21. nodes: processedNodes,
  22. viewport,
  23. } = processNodesWithoutDataSource(response.graph.nodes, response.graph.viewport)
  24. handleUpdateWorkflowCanvas({
  25. ...response.graph,
  26. nodes: processedNodes,
  27. viewport,
  28. } as WorkflowDataUpdater)
  29. setSyncWorkflowDraftHash(response.hash)
  30. setEnvSecrets((response.environment_variables || []).filter(env => env.value_type === 'secret').reduce((acc, env) => {
  31. acc[env.id] = env.value
  32. return acc
  33. }, {} as Record<string, string>))
  34. setEnvironmentVariables(response.environment_variables?.map(env => env.value_type === 'secret' ? { ...env, value: '[__HIDDEN__]' } : env) || [])
  35. }).finally(() => setIsSyncingWorkflowDraft(false))
  36. }, [handleUpdateWorkflowCanvas, workflowStore])
  37. return {
  38. handleRefreshWorkflowDraft,
  39. }
  40. }