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);
if(!this.server) {
node.error('Server must be configured on the node.');
node.error('Server must be configured on the node.', {});
return;
}
node.server.register(node);
this.encodeUri = function(pathTemplate, variables) {
for (const key in variables) {
@ -41,12 +42,12 @@ module.exports = function(RED) {
}
if(!node.server.isConnected()) {
node.error("Matrix server connection is currently closed");
node.error("Matrix server connection is currently closed", {});
node.send([null, msg]);
}
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;
}
@ -69,6 +70,10 @@ module.exports = function(RED) {
node.send([null, msg]);
});
});
node.on("close", function() {
node.server.deregister(node);
});
}
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);
if(!this.server) {
node.error('Server must be configured on the node.');
node.error('Server must be configured on the node.', {});
return;
}
node.server.register(node);
this.encodeUri = function(pathTemplate, variables) {
for (const key in variables) {
@ -41,12 +42,12 @@ module.exports = function(RED) {
}
if(!node.server.isConnected()) {
node.error("Matrix server connection is currently closed");
node.error("Matrix server connection is currently closed", {});
node.send([null, msg]);
}
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;
}
@ -70,6 +71,10 @@ module.exports = function(RED) {
node.send([null, msg]);
});
});
node.on("close", function() {
node.server.deregister(node);
});
}
RED.nodes.registerType("matrix-synapse-deactivate-user", MatrixSynapseDeactivateUser);
}

View File

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

View File

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

View File

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

View File

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