Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.

use-workflow-refresh-draft.ts 1.5KB

123456789101112131415161718192021222324252627282930313233343536
  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. export const useWorkflowRefreshDraft = () => {
  7. const workflowStore = useWorkflowStore()
  8. const { handleUpdateWorkflowCanvas } = useWorkflowUpdate()
  9. const handleRefreshWorkflowDraft = useCallback(() => {
  10. const {
  11. appId,
  12. setSyncWorkflowDraftHash,
  13. setIsSyncingWorkflowDraft,
  14. setEnvironmentVariables,
  15. setEnvSecrets,
  16. setConversationVariables,
  17. } = workflowStore.getState()
  18. setIsSyncingWorkflowDraft(true)
  19. fetchWorkflowDraft(`/apps/${appId}/workflows/draft`).then((response) => {
  20. handleUpdateWorkflowCanvas(response.graph as WorkflowDataUpdater)
  21. setSyncWorkflowDraftHash(response.hash)
  22. setEnvSecrets((response.environment_variables || []).filter(env => env.value_type === 'secret').reduce((acc, env) => {
  23. acc[env.id] = env.value
  24. return acc
  25. }, {} as Record<string, string>))
  26. setEnvironmentVariables(response.environment_variables?.map(env => env.value_type === 'secret' ? { ...env, value: '[__HIDDEN__]' } : env) || [])
  27. setConversationVariables(response.conversation_variables || [])
  28. }).finally(() => setIsSyncingWorkflowDraft(false))
  29. }, [handleUpdateWorkflowCanvas, workflowStore])
  30. return {
  31. handleRefreshWorkflowDraft,
  32. }
  33. }