diff --git a/lib/src/room.dart b/lib/src/room.dart index 82c45200..5a00401b 100644 --- a/lib/src/room.dart +++ b/lib/src/room.dart @@ -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 setPower(String userID, int power) async { - var powerMap = getState(EventTypes.RoomPowerLevels)?.content; - if (powerMap is! Map) { - powerMap = {}; - } - (powerMap['users'] ??= {})[userID] = power; + final powerMap = Map.from( + getState(EventTypes.RoomPowerLevels)?.content ?? {}, + ); + + final usersPowerMap = powerMap['users'] is Map + ? powerMap['users'] as Map + : (powerMap['users'] = {}); + + usersPowerMap[userID] = power; return await client.setRoomStateWithKey( id,