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

38 lines
1.1 KiB
TypeScript
Raw Normal View History

import { useCallback } from 'react'
import { useStore } from '../store'
import { useNodesReadOnly } from './use-workflow'
2025-04-18 13:59:12 +08:00
import { useHooksStore } from '@/app/components/workflow/hooks-store'
export type SyncCallback = {
onSuccess?: () => void
onError?: () => void
onSettled?: () => void
}
export const useNodesSyncDraft = () => {
const { getNodesReadOnly } = useNodesReadOnly()
const debouncedSyncWorkflowDraft = useStore(s => s.debouncedSyncWorkflowDraft)
2025-04-18 13:59:12 +08:00
const doSyncWorkflowDraft = useHooksStore(s => s.doSyncWorkflowDraft)
const syncWorkflowDraftWhenPageClose = useHooksStore(s => s.syncWorkflowDraftWhenPageClose)
2025-03-07 18:10:40 +08:00
const handleSyncWorkflowDraft = useCallback((
sync?: boolean,
notRefreshWhenSyncError?: boolean,
callback?: SyncCallback,
2025-03-07 18:10:40 +08:00
) => {
if (getNodesReadOnly())
return
if (sync)
2025-03-07 18:10:40 +08:00
doSyncWorkflowDraft(notRefreshWhenSyncError, callback)
else
debouncedSyncWorkflowDraft(doSyncWorkflowDraft)
}, [debouncedSyncWorkflowDraft, doSyncWorkflowDraft, getNodesReadOnly])
return {
doSyncWorkflowDraft,
handleSyncWorkflowDraft,
syncWorkflowDraftWhenPageClose,
}
}