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-nodes-sync-draft.ts 1.1KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. import { useCallback } from 'react'
  2. import {
  3. useStore,
  4. } from '../store'
  5. import {
  6. useNodesReadOnly,
  7. } from './use-workflow'
  8. import { useHooksStore } from '@/app/components/workflow/hooks-store'
  9. export const useNodesSyncDraft = () => {
  10. const { getNodesReadOnly } = useNodesReadOnly()
  11. const debouncedSyncWorkflowDraft = useStore(s => s.debouncedSyncWorkflowDraft)
  12. const doSyncWorkflowDraft = useHooksStore(s => s.doSyncWorkflowDraft)
  13. const syncWorkflowDraftWhenPageClose = useHooksStore(s => s.syncWorkflowDraftWhenPageClose)
  14. const handleSyncWorkflowDraft = useCallback((
  15. sync?: boolean,
  16. notRefreshWhenSyncError?: boolean,
  17. callback?: {
  18. onSuccess?: () => void
  19. onError?: () => void
  20. onSettled?: () => void
  21. },
  22. ) => {
  23. if (getNodesReadOnly())
  24. return
  25. if (sync)
  26. doSyncWorkflowDraft(notRefreshWhenSyncError, callback)
  27. else
  28. debouncedSyncWorkflowDraft(doSyncWorkflowDraft)
  29. }, [debouncedSyncWorkflowDraft, doSyncWorkflowDraft, getNodesReadOnly])
  30. return {
  31. doSyncWorkflowDraft,
  32. handleSyncWorkflowDraft,
  33. syncWorkflowDraftWhenPageClose,
  34. }
  35. }