mirror of
https://github.com/matrix-org/matrix-hookshot.git
synced 2025-03-10 21:19:13 +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.
|
// If we have a service filter.
|
||||||
.filter(c => typeof serviceFilter !== "string" || c?.service === serviceFilter) as GetConnectionsResponseItem[];
|
.filter(c => typeof serviceFilter !== "string" || c?.service === serviceFilter) as GetConnectionsResponseItem[];
|
||||||
const userPl = powerlevel.content.users?.[req.userId] || powerlevel.defaultUserLevel;
|
const userPl = powerlevel.content.users?.[req.userId] || powerlevel.defaultUserLevel;
|
||||||
|
const botPl = powerlevel.content.users?.[botUser.userId] || powerlevel.defaultUserLevel;
|
||||||
for (const c of connections) {
|
for (const c of connections) {
|
||||||
const requiredPl = Math.max(powerlevel.content.events?.[c.type] || 0, powerlevel.defaultStateEventLevel);
|
// TODO: What about crypto?
|
||||||
c.canEdit = userPl >= requiredPl;
|
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) {
|
if (!c.canEdit) {
|
||||||
delete c.secrets;
|
delete c.secrets;
|
||||||
}
|
}
|
||||||
|
@ -18,6 +18,7 @@ export interface GetConnectionsResponseItem<Config = object, Secrets = object> e
|
|||||||
id: string;
|
id: string;
|
||||||
config: Config;
|
config: Config;
|
||||||
secrets?: Secrets;
|
secrets?: Secrets;
|
||||||
|
canSendMessages?: boolean;
|
||||||
canEdit?: boolean;
|
canEdit?: boolean;
|
||||||
warning?: ConnectionWarning;
|
warning?: ConnectionWarning;
|
||||||
}
|
}
|
||||||
|
@ -96,6 +96,8 @@ export const RoomConfig = function<SConfig, ConnectionType extends GetConnection
|
|||||||
|
|
||||||
const [ toMigrate, setToMigrate ] = useState<ConnectionType[]>([]);
|
const [ toMigrate, setToMigrate ] = useState<ConnectionType[]>([]);
|
||||||
|
|
||||||
|
const canSendMessages = connections?.every(c => c.canSendMessages) ?? true;
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
// produce `toMigrate` composed of `migrationCandidates` with anything already in `connections` filtered out
|
// produce `toMigrate` composed of `migrationCandidates` with anything already in `connections` filtered out
|
||||||
// use `migrationComparator` to determine duplicates
|
// use `migrationComparator` to determine duplicates
|
||||||
@ -164,6 +166,12 @@ export const RoomConfig = function<SConfig, ConnectionType extends GetConnection
|
|||||||
<h1>{text.header}</h1>
|
<h1>{text.header}</h1>
|
||||||
</header>
|
</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>
|
{ canEditRoom && <section>
|
||||||
<h2>{text.createNew}</h2>
|
<h2>{text.createNew}</h2>
|
||||||
{serviceConfig && <ConnectionConfigComponent
|
{serviceConfig && <ConnectionConfigComponent
|
||||||
|
Loading…
x
Reference in New Issue
Block a user