feat: support node copying between `Chatflow` and `Workflow` apps

pull/20219/head
lexmin0412 8 months ago
parent 3995f55cbc
commit 467ce30f07

@ -119,6 +119,7 @@ export const Workflow: FC<WorkflowProps> = memo(({
setShowConfirm,
setControlPromptEditorRerenderKey,
setSyncWorkflowDraftHash,
setClipboardElements,
} = workflowStore.getState()
const {
handleSyncWorkflowDraft,
@ -145,6 +146,21 @@ export const Workflow: FC<WorkflowProps> = memo(({
}
})
const handleVisibilityChange = useCallback(() => {
if (document.visibilityState === 'visible') {
const storedElements = localStorage.getItem('clipboard_elements')
setClipboardElements(storedElements ? JSON.parse(storedElements) : [])
}
}, [setClipboardElements])
useEffect(() => {
document.addEventListener('visibilitychange', handleVisibilityChange)
return () => {
document.removeEventListener('visibilitychange', handleVisibilityChange)
}
}, [])
useEffect(() => {
setAutoFreeze(false)

@ -37,8 +37,14 @@ export type WorkflowSliceShape = {
export const createWorkflowSlice: StateCreator<WorkflowSliceShape> = set => ({
workflowRunningData: undefined,
setWorkflowRunningData: workflowRunningData => set(() => ({ workflowRunningData })),
clipboardElements: [],
setClipboardElements: clipboardElements => set(() => ({ clipboardElements })),
clipboardElements: (() => {
const storedElements = localStorage.getItem('clipboard_elements')
return storedElements ? JSON.parse(storedElements) : []
})(),
setClipboardElements: (clipboardElements) => {
set(() => ({ clipboardElements }))
localStorage.setItem('clipboard_elements', JSON.stringify(clipboardElements))
},
selection: null,
setSelection: selection => set(() => ({ selection })),
bundleNodeSize: null,

Loading…
Cancel
Save