Merge pull request #1769 from famedly/krille/set-power-type-safe

fix: Make room.setPower more type safe and avoid change powerlevel in RAM before sending request to server
This commit is contained in:
td 2024-04-18 14:35:16 +05:30 committed by GitHub
commit 78e5abc0ae
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 9 additions and 5 deletions

View File

@ -1201,11 +1201,15 @@ class Room {
/// Returns the event ID of the new state event. If there is no known
/// power level event, there might something broken and this returns null.
Future<String> setPower(String userID, int power) async {
var powerMap = getState(EventTypes.RoomPowerLevels)?.content;
if (powerMap is! Map<String, dynamic>) {
powerMap = <String, dynamic>{};
}
(powerMap['users'] ??= {})[userID] = power;
final powerMap = Map<String, Object?>.from(
getState(EventTypes.RoomPowerLevels)?.content ?? {},
);
final usersPowerMap = powerMap['users'] is Map<String, Object?>
? powerMap['users'] as Map<String, Object?>
: (powerMap['users'] = <String, Object?>{});
usersPowerMap[userID] = power;
return await client.setRoomStateWithKey(
id,