diff --git a/packages/node_modules/@node-red/editor-client/src/js/nodes.js b/packages/node_modules/@node-red/editor-client/src/js/nodes.js index 2a7b440f2..dacd6eeae 100644 --- a/packages/node_modules/@node-red/editor-client/src/js/nodes.js +++ b/packages/node_modules/@node-red/editor-client/src/js/nodes.js @@ -2406,11 +2406,24 @@ RED.nodes = (function() { } else { delete n.g } - // If importing into a subflow, ensure an outbound-link doesn't get added - if (activeSubflow && /^link /.test(n.type) && n.links) { + // If importing a link node, ensure both ends of each link are either: + // - not in a subflow + // - both in the same subflow + if (/^link /.test(n.type) && n.links) { n.links = n.links.filter(function(id) { const otherNode = node_map[id] || RED.nodes.node(id); - return (otherNode && otherNode.z === activeWorkspace); + if (!otherNode) { + // Cannot find other end - remove the link + return false + } + if (otherNode.z === n.z) { + // Both ends in the same flow/subflow + return true + } else if (!!getSubflow(n.z) || !!getSubflow(otherNode.z)) { + // One end is in a subflow - remove the link + return false + } + return true }); } for (var d3 in n._def.defaults) {