More Moderation tweaks (#2566)

* Show room member role changes in the timeline.

* Fix a bug in room flow coordinator.

* Tidy up roles and permissions flow.

* Refresh the power levels in the room details screen.

* Automatically update permissions after saving.

* Remove extra button.

* Add a short delay to the roles and permissions screen snapshots.
The permissions rows are now in a loading state initially.
This commit is contained in:
Doug
2024-03-13 15:36:38 +00:00
committed by GitHub
parent 9d68d9e250
commit 1c914c314f
17 changed files with 212 additions and 43 deletions
@@ -122,9 +122,19 @@ class RoomChangeRolesScreenViewModel: RoomChangeRolesScreenViewModelType, RoomCh
let promotingUpdates = state.membersToPromote.map { ($0.id, state.mode.rustPowerLevel) }
let demotingUpdates = state.membersToDemote.map { ($0.id, Int64(0)) }
// A task we can await until the room's info gets modified with the new power levels.
let infoTask = Task { await roomProxy.actionsPublisher.values.first { $0 == .roomInfoUpdate } }
switch await roomProxy.updatePowerLevelsForUsers(promotingUpdates + demotingUpdates) {
case .success:
MXLog.info("Success")
// Call updateMembers so the count is correct on the root screen.
_ = await infoTask.value
await roomProxy.updateMembers()
actionsSubject.send(.complete)
case .failure:
context.alertInfo = AlertInfo(id: .error)
}