From a7c855cab8d8f81a705da719100cc806780584f1 Mon Sep 17 00:00:00 2001 From: yangzheli <43645580+yangzheli@users.noreply.github.com> Date: Tue, 28 Oct 2025 09:26:12 +0800 Subject: [PATCH] fix(workflow): resolve note node copy/duplicate errors (#27528) Co-authored-by: crazywoola <100913391+crazywoola@users.noreply.github.com> --- .../workflow/hooks/use-nodes-interactions.ts | 4 +++- web/app/components/workflow/note-node/index.tsx | 11 +++-------- 2 files changed, 6 insertions(+), 9 deletions(-) diff --git a/web/app/components/workflow/hooks/use-nodes-interactions.ts b/web/app/components/workflow/hooks/use-nodes-interactions.ts index fa61cdeb8c..4de53c431c 100644 --- a/web/app/components/workflow/hooks/use-nodes-interactions.ts +++ b/web/app/components/workflow/hooks/use-nodes-interactions.ts @@ -1445,6 +1445,7 @@ export const useNodesInteractions = () => { // If no nodeId is provided, fall back to the current behavior const bundledNodes = nodes.filter((node) => { if (!node.data._isBundled) return false + if (node.type === CUSTOM_NOTE_NODE) return true const { metaData } = nodesMetaDataMap![node.data.type as BlockEnum] if (metaData.isSingleton) return false return !node.data.isInIteration && !node.data.isInLoop @@ -1457,6 +1458,7 @@ export const useNodesInteractions = () => { const selectedNode = nodes.find((node) => { if (!node.data.selected) return false + if (node.type === CUSTOM_NOTE_NODE) return true const { metaData } = nodesMetaDataMap![node.data.type as BlockEnum] return !metaData.isSingleton }) @@ -1495,7 +1497,7 @@ export const useNodesInteractions = () => { = generateNewNode({ type: nodeToPaste.type, data: { - ...nodesMetaDataMap![nodeType].defaultValue, + ...(nodeToPaste.type !== CUSTOM_NOTE_NODE && nodesMetaDataMap![nodeType].defaultValue), ...nodeToPaste.data, selected: false, _isBundled: false, diff --git a/web/app/components/workflow/note-node/index.tsx b/web/app/components/workflow/note-node/index.tsx index 7f2cde42d6..5a0b2677c1 100644 --- a/web/app/components/workflow/note-node/index.tsx +++ b/web/app/components/workflow/note-node/index.tsx @@ -1,6 +1,5 @@ import { memo, - useCallback, useRef, } from 'react' import { useTranslation } from 'react-i18next' @@ -51,10 +50,6 @@ const NoteNode = ({ } = useNodesInteractions() const { handleNodeDataUpdateWithSyncDraft } = useNodeDataUpdate() - const handleDeleteNode = useCallback(() => { - handleNodeDelete(id) - }, [id, handleNodeDelete]) - useClickAway(() => { handleNodeDataUpdateWithSyncDraft({ id, data: { selected: false } }) }, ref) @@ -102,9 +97,9 @@ const NoteNode = ({ handleNodesCopy(id)} + onDuplicate={() => handleNodesDuplicate(id)} + onDelete={() => handleNodeDelete(id)} showAuthor={data.showAuthor} onShowAuthorChange={handleShowAuthorChange} />