mirror of
https://github.com/node-red/node-red.git
synced 2025-03-01 10:36:34 +00:00
Better fix for trigegr 2nd message in last payload mode
Now works correctly in multiple topics mode. And update tests
This commit is contained in:
@@ -76,6 +76,7 @@ module.exports = function(RED) {
|
||||
var node = this;
|
||||
node.topics = {};
|
||||
|
||||
var npay = {};
|
||||
var pendingMessages = [];
|
||||
var activeMessagePromise = null;
|
||||
var processMessageQueue = function(msg) {
|
||||
@@ -106,9 +107,7 @@ module.exports = function(RED) {
|
||||
});
|
||||
}
|
||||
|
||||
var npay;
|
||||
this.on('input', function(msg) {
|
||||
if (node.op2type === "payl") { npay = RED.util.cloneMessage(msg); }
|
||||
processMessageQueue(msg);
|
||||
});
|
||||
|
||||
@@ -124,6 +123,7 @@ module.exports = function(RED) {
|
||||
node.status({});
|
||||
}
|
||||
else {
|
||||
if (node.op2type === "payl") { npay[topic] = RED.util.cloneMessage(msg); }
|
||||
if (((!node.topics[topic].tout) && (node.topics[topic].tout !== 0)) || (node.loop === true)) {
|
||||
promise = Promise.resolve();
|
||||
if (node.op2type === "pay") { node.topics[topic].m2 = RED.util.cloneMessage(msg.payload); }
|
||||
@@ -188,10 +188,15 @@ module.exports = function(RED) {
|
||||
});
|
||||
}
|
||||
promise.then(() => {
|
||||
msg2.payload = node.topics[topic].m2;
|
||||
if (node.op2type === "payl") {
|
||||
node.send(npay[topic]);
|
||||
delete npay[topic];
|
||||
}
|
||||
else {
|
||||
msg2.payload = node.topics[topic].m2;
|
||||
node.send(msg2);
|
||||
}
|
||||
delete node.topics[topic];
|
||||
if (node.op2type === "payl") { node.send(npay); }
|
||||
else { node.send(msg2); }
|
||||
node.status({});
|
||||
}).catch(err => {
|
||||
node.error(err);
|
||||
|
Reference in New Issue
Block a user