From 55a45ba07c0468746bc833d10b3bac5bf38ce407 Mon Sep 17 00:00:00 2001 From: Half-Shot Date: Wed, 6 Dec 2023 16:06:17 +0000 Subject: [PATCH 1/3] Add a warning when the room does not have permission to post messages. --- src/Widgets/BridgeWidgetApi.ts | 8 ++++++-- src/provisioning/api.ts | 1 + web/components/roomConfig/RoomConfig.tsx | 9 +++++++++ 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/src/Widgets/BridgeWidgetApi.ts b/src/Widgets/BridgeWidgetApi.ts index 6e64aec7e..ab172c167 100644 --- a/src/Widgets/BridgeWidgetApi.ts +++ b/src/Widgets/BridgeWidgetApi.ts @@ -176,9 +176,13 @@ export class BridgeWidgetApi extends ProvisioningApi { // If we have a service filter. .filter(c => typeof serviceFilter !== "string" || c?.service === serviceFilter) as GetConnectionsResponseItem[]; const userPl = powerlevel.content.users?.[req.userId] || powerlevel.defaultUserLevel; + const botPl = powerlevel.content.users?.[botUser.userId] || powerlevel.defaultUserLevel; for (const c of connections) { - const requiredPl = Math.max(powerlevel.content.events?.[c.type] || 0, powerlevel.defaultStateEventLevel); - c.canEdit = userPl >= requiredPl; + // TODO: What about crypto? + const requiredPlForEdit = Math.max(powerlevel.content.events?.[c.type] ?? 0, powerlevel.defaultStateEventLevel); + const requiredPlForMessages = Math.max(powerlevel.content.events?.["m.room.message"] ?? powerlevel.content.events_default ?? 0); + c.canEdit = userPl >= requiredPlForEdit; + c.canSendMessages = botPl >= requiredPlForMessages; if (!c.canEdit) { delete c.secrets; } diff --git a/src/provisioning/api.ts b/src/provisioning/api.ts index 26be75116..1f6e76cac 100644 --- a/src/provisioning/api.ts +++ b/src/provisioning/api.ts @@ -18,6 +18,7 @@ export interface GetConnectionsResponseItem e id: string; config: Config; secrets?: Secrets; + canSendMessages?: boolean; canEdit?: boolean; warning?: ConnectionWarning; } diff --git a/web/components/roomConfig/RoomConfig.tsx b/web/components/roomConfig/RoomConfig.tsx index b9f8294ab..a7c4002f2 100644 --- a/web/components/roomConfig/RoomConfig.tsx +++ b/web/components/roomConfig/RoomConfig.tsx @@ -96,6 +96,8 @@ export const RoomConfig = function([]); + const canSendMessages = connections?.every(c => c.canSendMessages) ?? true; + useEffect(() => { // produce `toMigrate` composed of `migrationCandidates` with anything already in `connections` filtered out // use `migrationComparator` to determine duplicates @@ -164,6 +166,13 @@ export const RoomConfig = function{text.header} } + { !canSendMessages && canEditRoom && + + The room settings currently do not permit the bot to send + messages in this room. Please go to the room settings in your client + and adjust permissions. + + } { canEditRoom &&

{text.createNew}

{serviceConfig && Date: Wed, 6 Dec 2023 16:47:47 +0000 Subject: [PATCH 2/3] Update warning --- web/components/roomConfig/RoomConfig.tsx | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/web/components/roomConfig/RoomConfig.tsx b/web/components/roomConfig/RoomConfig.tsx index a7c4002f2..04c5f1ad3 100644 --- a/web/components/roomConfig/RoomConfig.tsx +++ b/web/components/roomConfig/RoomConfig.tsx @@ -168,9 +168,8 @@ export const RoomConfig = function - The room settings currently do not permit the bot to send - messages in this room. Please go to the room settings in your client - and adjust permissions. + This room does not permit the bot to send messages. + Please go to the room settings in your client and adjust permissions. } { canEditRoom &&
From aa0810b086773505a5f70558599d7fc9c463bf03 Mon Sep 17 00:00:00 2001 From: Half-Shot Date: Wed, 6 Dec 2023 16:48:35 +0000 Subject: [PATCH 3/3] changelog --- changelog.d/852.feature | 1 + 1 file changed, 1 insertion(+) create mode 100644 changelog.d/852.feature diff --git a/changelog.d/852.feature b/changelog.d/852.feature new file mode 100644 index 000000000..127adc6cb --- /dev/null +++ b/changelog.d/852.feature @@ -0,0 +1 @@ +Warn if the bot does not have permissions to talk in a room.