From 514d667db254174ad80550aefa3fa682778eb038 Mon Sep 17 00:00:00 2001 From: Luke Barnard Date: Thu, 15 Sep 2016 15:24:08 +0100 Subject: [PATCH] Add ability to set plumbing state in a room This takes the form: The bridge will not create an admin room if there is plumbing state in the room of the form: ```JS m.room.plumbing: { content: { status: "enabled" }, ... } ``` --- src/ScalarMessaging.js | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/src/ScalarMessaging.js b/src/ScalarMessaging.js index bb6b4d02cb..6fd2263d8c 100644 --- a/src/ScalarMessaging.js +++ b/src/ScalarMessaging.js @@ -174,6 +174,25 @@ function inviteUser(event, roomId, userId) { }); } +function setPlumbingState(event, roomId, status) { + if (typeof status !== 'string') { + throw new Error('Plumbing state status should be a string'); + } + console.log(`Received request to set plumbing state to status "${status}" in room ${roomId}`); + const client = MatrixClientPeg.get(); + if (!client) { + sendError(event, "You need to be logged in."); + return; + } + client.sendStateEvent(roomId, "m.room.plumbing", { status : status }).done(() => { + sendResponse(event, { + success: true, + }); + }, (err) => { + sendError(event, err.message ? err.message : "Failed to send request.", err); + }); +} + function setBotOptions(event, roomId, userId) { console.log(`Received request to set options for bot ${userId} in room ${roomId}`); const client = MatrixClientPeg.get(); @@ -312,6 +331,9 @@ const onMessage = function(event) { if (event.data.action === "join_rules_state") { getJoinRules(event, roomId); return; + } else if (event.data.action === "set_plumbing_state") { + setPlumbingState(event, roomId, event.data.status); + return; } if (!userId) {