dify/web/app/components/workflow/hooks/use-nodes-sync-draft.ts

40 lines
1.1 KiB
TypeScript

import { useCallback } from 'react'
import {
useStore,
} from '../store'
import {
useNodesReadOnly,
} from './use-workflow'
import { useHooksStore } from '@/app/components/workflow/hooks-store'
export const useNodesSyncDraft = () => {
const { getNodesReadOnly } = useNodesReadOnly()
const debouncedSyncWorkflowDraft = useStore(s => s.debouncedSyncWorkflowDraft)
const doSyncWorkflowDraft = useHooksStore(s => s.doSyncWorkflowDraft)
const syncWorkflowDraftWhenPageClose = useHooksStore(s => s.syncWorkflowDraftWhenPageClose)
const handleSyncWorkflowDraft = useCallback((
sync?: boolean,
notRefreshWhenSyncError?: boolean,
callback?: {
onSuccess?: () => void
onError?: () => void
onSettled?: () => void
},
) => {
if (getNodesReadOnly())
return
if (sync)
doSyncWorkflowDraft(notRefreshWhenSyncError, callback)
else
debouncedSyncWorkflowDraft(doSyncWorkflowDraft)
}, [debouncedSyncWorkflowDraft, doSyncWorkflowDraft, getNodesReadOnly])
return {
doSyncWorkflowDraft,
handleSyncWorkflowDraft,
syncWorkflowDraftWhenPageClose,
}
}