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