From 171c146ec5106683c2611237f85efb573db5b566 Mon Sep 17 00:00:00 2001 From: Nick O'Leary Date: Mon, 27 Nov 2023 17:14:15 +0000 Subject: [PATCH] Debounce node-removed notifications Fixes #4413 --- .../@node-red/editor-client/src/js/red.js | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/packages/node_modules/@node-red/editor-client/src/js/red.js b/packages/node_modules/@node-red/editor-client/src/js/red.js index 3c92a90ca..3878965e3 100644 --- a/packages/node_modules/@node-red/editor-client/src/js/red.js +++ b/packages/node_modules/@node-red/editor-client/src/js/red.js @@ -534,6 +534,10 @@ var RED = (function() { RED.view.redrawStatus(node); } }); + + let pendingNodeRemovedNotifications = [] + let pendingNodeRemovedTimeout + RED.comms.subscribe("notification/node/#",function(topic,msg) { var i,m; var typeList; @@ -571,8 +575,15 @@ var RED = (function() { m = msg[i]; info = RED.nodes.removeNodeSet(m.id); if (info.added) { - typeList = ""; - RED.notify(RED._("palette.event.nodeRemoved", {count:m.types.length})+typeList,"success"); + pendingNodeRemovedNotifications = pendingNodeRemovedNotifications.concat(m.types.map(RED.utils.sanitize)) + if (pendingNodeRemovedTimeout) { + clearTimeout(pendingNodeRemovedTimeout) + } + pendingNodeRemovedTimeout = setTimeout(function () { + typeList = ""; + RED.notify(RED._("palette.event.nodeRemoved", {count:pendingNodeRemovedNotifications.length})+typeList,"success"); + pendingNodeRemovedNotifications = [] + }, 200) } } loadIconList();