mirror of
				https://github.com/node-red/node-red.git
				synced 2025-03-01 10:36:34 +00:00 
			
		
		
		
	Handle users of env config nodes when undo subflow node changes
This commit is contained in:
		| @@ -453,10 +453,48 @@ RED.history = (function() { | ||||
|                                     RED.events.emit("nodes:change",newConfigNode); | ||||
|                                 } | ||||
|                             }); | ||||
|                         } else if (i === "env" && ev.node.type.indexOf("subflow:") === 0) { | ||||
|                             // Subflow can have config node in node.env | ||||
|                             let nodeList = ev.node.env || []; | ||||
|                             nodeList = nodeList.reduce((list, prop) => { | ||||
|                                 if (prop.type === "conf-type" && prop.value) { | ||||
|                                     list.push(prop.value); | ||||
|                                 } | ||||
|                                 return list; | ||||
|                             }, []); | ||||
|  | ||||
|                             nodeList.forEach(function(id) { | ||||
|                                 const configNode = RED.nodes.node(id); | ||||
|                                 if (configNode) { | ||||
|                                     if (configNode.users.indexOf(ev.node) !== -1) { | ||||
|                                         configNode.users.splice(configNode.users.indexOf(ev.node), 1); | ||||
|                                         RED.events.emit("nodes:change", configNode); | ||||
|                                     } | ||||
|                                 } | ||||
|                             }); | ||||
|  | ||||
|                             nodeList = ev.changes.env || []; | ||||
|                             nodeList = nodeList.reduce((list, prop) => { | ||||
|                                 if (prop.type === "conf-type" && prop.value) { | ||||
|                                     list.push(prop.value); | ||||
|                                 } | ||||
|                                 return list; | ||||
|                             }, []); | ||||
|  | ||||
|                             nodeList.forEach(function(id) { | ||||
|                                 const configNode = RED.nodes.node(id); | ||||
|                                 if (configNode) { | ||||
|                                     if (configNode.users.indexOf(ev.node) === -1) { | ||||
|                                         configNode.users.push(ev.node); | ||||
|                                         RED.events.emit("nodes:change", configNode); | ||||
|                                     } | ||||
|                                 } | ||||
|                             }); | ||||
|                         } | ||||
|                         ev.node[i] = ev.changes[i]; | ||||
|                     } | ||||
|                 } | ||||
|  | ||||
|                 ev.node.dirty = true; | ||||
|                 ev.node.changed = ev.changed; | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user