refactor: Restrict canKick canBan and canRedact to joined users

This commit is contained in:
Christian Kußowski 2025-07-17 10:18:05 +02:00
parent d3071ec531
commit 282ac54c7b
No known key found for this signature in database
GPG Key ID: E067ECD60F1A0652
1 changed files with 20 additions and 12 deletions

View File

@ -1980,10 +1980,12 @@ class Room {
} }
/// The level required to ban a user. /// The level required to ban a user.
bool get canBan => bool get canBan {
(getState(EventTypes.RoomPowerLevels)?.content.tryGet<int>('ban') ?? if (membership != Membership.join) return false;
50) <= return (getState(EventTypes.RoomPowerLevels)?.content.tryGet<int>('ban') ??
ownPowerLevel; 50) <=
ownPowerLevel;
}
/// returns if user can change a particular state event by comparing `ownPowerLevel` /// returns if user can change a particular state event by comparing `ownPowerLevel`
/// with possible overrides in `events`, if not present compares `ownPowerLevel` /// with possible overrides in `events`, if not present compares `ownPowerLevel`
@ -2071,16 +2073,22 @@ class Room {
} }
/// The level required to kick a user. /// The level required to kick a user.
bool get canKick => bool get canKick {
(getState(EventTypes.RoomPowerLevels)?.content.tryGet<int>('kick') ?? if (membership != Membership.join) return false;
50) <= return (getState(EventTypes.RoomPowerLevels)?.content.tryGet<int>('kick') ??
ownPowerLevel; 50) <=
ownPowerLevel;
}
/// The level required to redact an event. /// The level required to redact an event.
bool get canRedact => bool get canRedact {
(getState(EventTypes.RoomPowerLevels)?.content.tryGet<int>('redact') ?? if (membership != Membership.join) return false;
50) <= return (getState(EventTypes.RoomPowerLevels)
ownPowerLevel; ?.content
.tryGet<int>('redact') ??
50) <=
ownPowerLevel;
}
/// The default level required to send state events. Can be overridden by the events key. /// The default level required to send state events. Can be overridden by the events key.
bool get canSendDefaultStates { bool get canSendDefaultStates {