mirror of
https://github.com/matrix-org/matrix-hookshot.git
synced 2025-03-10 13:17:08 +00:00
Warn if the bot cannot send a message in the widget (#852)
* Add a warning when the room does not have permission to post messages. * Update warning * changelog
This commit is contained in:
parent
911c2254b2
commit
95738ed844
1
changelog.d/852.feature
Normal file
1
changelog.d/852.feature
Normal file
@ -0,0 +1 @@
|
||||
Warn if the bot does not have permissions to talk in a room.
|
@ -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;
|
||||
}
|
||||
|
@ -18,6 +18,7 @@ export interface GetConnectionsResponseItem<Config = object, Secrets = object> e
|
||||
id: string;
|
||||
config: Config;
|
||||
secrets?: Secrets;
|
||||
canSendMessages?: boolean;
|
||||
canEdit?: boolean;
|
||||
warning?: ConnectionWarning;
|
||||
}
|
||||
|
@ -96,6 +96,8 @@ export const RoomConfig = function<SConfig, ConnectionType extends GetConnection
|
||||
|
||||
const [ toMigrate, setToMigrate ] = useState<ConnectionType[]>([]);
|
||||
|
||||
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,12 @@ export const RoomConfig = function<SConfig, ConnectionType extends GetConnection
|
||||
<h1>{text.header}</h1>
|
||||
</header>
|
||||
}
|
||||
{ !canSendMessages && canEditRoom &&
|
||||
<WarningPane header={"Misconfigured permissions"}>
|
||||
This room does not permit the bot to send messages.
|
||||
Please go to the room settings in your client and adjust permissions.
|
||||
</WarningPane>
|
||||
}
|
||||
{ canEditRoom && <section>
|
||||
<h2>{text.createNew}</h2>
|
||||
{serviceConfig && <ConnectionConfigComponent
|
||||
|
Loading…
x
Reference in New Issue
Block a user