Make errors catchable and (de)register at config node of all nodes

This commit is contained in:
bvmensvoort 2023-06-11 10:50:15 +02:00
parent 1f97d9803b
commit 2bd0fa48e2
6 changed files with 51 additions and 20 deletions

View File

@ -8,9 +8,10 @@ module.exports = function(RED) {
this.server = RED.nodes.getNode(n.server); this.server = RED.nodes.getNode(n.server);
if(!this.server) { if(!this.server) {
node.error('Server must be configured on the node.'); node.error('Server must be configured on the node.', {});
return; return;
} }
node.server.register(node);
this.encodeUri = function(pathTemplate, variables) { this.encodeUri = function(pathTemplate, variables) {
for (const key in variables) { for (const key in variables) {
@ -41,12 +42,12 @@ module.exports = function(RED) {
} }
if(!node.server.isConnected()) { if(!node.server.isConnected()) {
node.error("Matrix server connection is currently closed"); node.error("Matrix server connection is currently closed", {});
node.send([null, msg]); node.send([null, msg]);
} }
if(!msg.userId) { if(!msg.userId) {
node.error("msg.userId must be set to edit/create a user (ex: @user:server.com)"); node.error("msg.userId must be set to edit/create a user (ex: @user:server.com)", {});
return; return;
} }
@ -69,6 +70,10 @@ module.exports = function(RED) {
node.send([null, msg]); node.send([null, msg]);
}); });
}); });
node.on("close", function() {
node.server.deregister(node);
});
} }
RED.nodes.registerType("matrix-synapse-create-edit-user", MatrixSynapseCreateEditUser); RED.nodes.registerType("matrix-synapse-create-edit-user", MatrixSynapseCreateEditUser);
} }

View File

@ -8,9 +8,10 @@ module.exports = function(RED) {
this.server = RED.nodes.getNode(n.server); this.server = RED.nodes.getNode(n.server);
if(!this.server) { if(!this.server) {
node.error('Server must be configured on the node.'); node.error('Server must be configured on the node.', {});
return; return;
} }
node.server.register(node);
this.encodeUri = function(pathTemplate, variables) { this.encodeUri = function(pathTemplate, variables) {
for (const key in variables) { for (const key in variables) {
@ -41,12 +42,12 @@ module.exports = function(RED) {
} }
if(!node.server.isConnected()) { if(!node.server.isConnected()) {
node.error("Matrix server connection is currently closed"); node.error("Matrix server connection is currently closed", {});
node.send([null, msg]); node.send([null, msg]);
} }
if(!msg.userId) { if(!msg.userId) {
node.error("msg.userId must be set to edit/create a user (ex: @user:server.com)"); node.error("msg.userId must be set to edit/create a user (ex: @user:server.com)", {});
return; return;
} }
@ -70,6 +71,10 @@ module.exports = function(RED) {
node.send([null, msg]); node.send([null, msg]);
}); });
}); });
node.on("close", function() {
node.server.deregister(node);
});
} }
RED.nodes.registerType("matrix-synapse-deactivate-user", MatrixSynapseDeactivateUser); RED.nodes.registerType("matrix-synapse-deactivate-user", MatrixSynapseDeactivateUser);
} }

View File

@ -9,10 +9,9 @@ module.exports = function(RED) {
this.roomId = n.roomId; this.roomId = n.roomId;
if(!this.server) { if(!this.server) {
node.error('Server must be configured on the node.'); node.error('Server must be configured on the node.', {});
return; return;
} }
this.encodeUri = function(pathTemplate, variables) { this.encodeUri = function(pathTemplate, variables) {
for (const key in variables) { for (const key in variables) {
if (!variables.hasOwnProperty(key)) { if (!variables.hasOwnProperty(key)) {
@ -42,18 +41,18 @@ module.exports = function(RED) {
} }
if(!node.server.isConnected()) { if(!node.server.isConnected()) {
node.error("Matrix server connection is currently closed"); node.error("Matrix server connection is currently closed", {});
node.send([null, msg]); node.send([null, msg]);
} }
msg.topic = node.roomId || msg.topic; msg.topic = node.roomId || msg.topic;
if(!msg.topic) { if(!msg.topic) {
node.error("room must be defined in either msg.topic or in node config"); node.error("room must be defined in either msg.topic or in node config", {});
return; return;
} }
if(!msg.userId) { if(!msg.userId) {
node.error("msg.userId is required to set user into a room"); node.error("msg.userId is required to set user into a room", {});
return; return;
} }
@ -77,6 +76,10 @@ module.exports = function(RED) {
node.send([null, msg]); node.send([null, msg]);
}); });
}); });
node.on("close", function() {
node.server.deregister(node);
});
} }
RED.nodes.registerType("matrix-synapse-join-room", MatrixJoinRoom); RED.nodes.registerType("matrix-synapse-join-room", MatrixJoinRoom);
} }

View File

@ -12,25 +12,27 @@ module.exports = function(RED) {
this.sharedSecret = this.credentials.sharedSecret; this.sharedSecret = this.credentials.sharedSecret;
if(!this.server) { if(!this.server) {
node.error('Server URL must be configured on the node.'); node.error('Server URL must be configured on the node.', {});
return; return;
} }
if(!this.sharedSecret) { if(!this.sharedSecret) {
node.error('Shared registration secret must be configured on the node.'); node.error('Shared registration secret must be configured on the node.', {});
return; return;
} }
node.server.register(node);
node.on("input", async function (msg) { node.on("input", async function (msg) {
const { got } = await import('got'); const { got } = await import('got');
if(!msg.payload.username) { if(!msg.payload.username) {
node.error("msg.payload.username is required"); node.error("msg.payload.username is required", {});
return; return;
} }
if(!msg.payload.password) { if(!msg.payload.password) {
node.error("msg.payload.password is required"); node.error("msg.payload.password is required", {});
return; return;
} }
@ -50,7 +52,7 @@ module.exports = function(RED) {
var nonce = response.body.nonce; var nonce = response.body.nonce;
if(!nonce) { if(!nonce) {
node.error('Could not get nonce from /_synapse/admin/v1/register'); node.error('Could not get nonce from /_synapse/admin/v1/register', {});
return; return;
} }
@ -96,6 +98,10 @@ module.exports = function(RED) {
node.send(msg); node.send(msg);
})(); })();
}); });
node.on("close", function() {
node.server.deregister(node);
});
} }
RED.nodes.registerType("matrix-synapse-register", MatrixSynapseRegister, { RED.nodes.registerType("matrix-synapse-register", MatrixSynapseRegister, {
credentials: { credentials: {

View File

@ -12,6 +12,8 @@ module.exports = function(RED) {
return; return;
} }
node.server.register(node);
node.status({ fill: "red", shape: "ring", text: "disconnected" }); node.status({ fill: "red", shape: "ring", text: "disconnected" });
node.server.on("disconnected", function(){ node.server.on("disconnected", function(){
@ -29,7 +31,7 @@ module.exports = function(RED) {
} }
if(!node.server.isConnected()) { if(!node.server.isConnected()) {
node.error("Matrix server connection is currently closed"); node.error("Matrix server connection is currently closed", {});
node.send([null, msg]); node.send([null, msg]);
} }
@ -62,6 +64,10 @@ module.exports = function(RED) {
node.send([null, msg]); node.send([null, msg]);
}); });
}); });
node.on("close", function() {
node.server.deregister(node);
});
} }
RED.nodes.registerType("matrix-synapse-users", MatrixSynapseUsers); RED.nodes.registerType("matrix-synapse-users", MatrixSynapseUsers);
} }

View File

@ -8,10 +8,12 @@ module.exports = function(RED) {
this.server = RED.nodes.getNode(n.server); this.server = RED.nodes.getNode(n.server);
if(!this.server) { if(!this.server) {
node.error('Server must be configured on the node.'); node.error('Server must be configured on the node.', {});
return; return;
} }
node.server.register(node);
this.encodeUri = function(pathTemplate, variables) { this.encodeUri = function(pathTemplate, variables) {
for (const key in variables) { for (const key in variables) {
if (!variables.hasOwnProperty(key)) { if (!variables.hasOwnProperty(key)) {
@ -41,12 +43,12 @@ module.exports = function(RED) {
} }
if(!node.server.isConnected()) { if(!node.server.isConnected()) {
node.error("Matrix server connection is currently closed"); node.error("Matrix server connection is currently closed", {});
node.send([null, msg]); node.send([null, msg]);
} }
if(!msg.userId) { if(!msg.userId) {
node.error("msg.userId must be set to get user whois data"); node.error("msg.userId must be set to get user whois data", {});
return; return;
} }
@ -70,6 +72,10 @@ module.exports = function(RED) {
node.send([null, msg]); node.send([null, msg]);
}); });
}); });
node.on("close", function() {
node.server.deregister(node);
});
} }
RED.nodes.registerType("matrix-whois-user", MatrixWhoIsUser); RED.nodes.registerType("matrix-whois-user", MatrixWhoIsUser);
} }