dify/web/app/components/workflow/hooks/use-nodes-sync-draft.ts
Kevin9703 6022939bf0
fix: prevent hidden-tab collaboration leader from saving stale drafts (#38997)
Co-authored-by: hjlarry <hjlarry@163.com>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: yyh <yuanyouhuilyz@gmail.com>
Co-authored-by: yyh <92089059+lyzno1@users.noreply.github.com>
2026-07-20 06:58:01 +00:00

32 lines
1.1 KiB
TypeScript

import type { SyncDraftCallback } from '../hooks-store'
import { useCallback } from 'react'
import { useHooksStore } from '@/app/components/workflow/hooks-store'
import { useStore } from '../store'
import { useNodesReadOnly } from './use-workflow'
export type SyncCallback = SyncDraftCallback
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?: SyncDraftCallback) => {
if (getNodesReadOnly()) return
if (sync) return doSyncWorkflowDraft(notRefreshWhenSyncError, callback)
debouncedSyncWorkflowDraft(doSyncWorkflowDraft)
},
[debouncedSyncWorkflowDraft, doSyncWorkflowDraft, getNodesReadOnly],
)
return {
doSyncWorkflowDraft,
handleSyncWorkflowDraft,
syncWorkflowDraftWhenPageClose,
}
}