Moderation tweaks (#2548)

* Only allow admins to see the roles and permissions screen.

* Hide the selection checkbox on Admins when changing roles.

* Show an empty state for banned users.

* Add separate actions for ban and remove.

* Implement reset permissions and demote self alerts.

* Add tests for resetting permissions and demoting self.

* Add a warning when promoting someone to administrator.
This commit is contained in:
Doug
2024-03-11 14:19:53 +00:00
committed by GitHub
parent 9ce12e6e16
commit 71721f01b1
37 changed files with 411 additions and 104 deletions
@@ -17,13 +17,33 @@
import Foundation
enum RoomRolesAndPermissionsScreenViewModelAction {
/// The user would like to edit member roles.
case editRoles(RoomRolesAndPermissionsScreenRole)
/// The user would like to edit room permissions.
case editPermissions(RoomRolesAndPermissionsScreenPermissionsGroup)
/// The user has demoted themself.
case demotedOwnUser
}
struct RoomRolesAndPermissionsScreenViewState: BindableState {
/// The number of administrators in the room.
var administratorCount: Int?
/// The number of moderators in the room.
var moderatorCount: Int?
var bindings = RoomRolesAndPermissionsScreenViewStateBindings()
}
struct RoomRolesAndPermissionsScreenViewStateBindings {
var alertInfo: AlertInfo<RoomRolesAndPermissionsScreenAlertType>?
}
enum RoomRolesAndPermissionsScreenAlertType {
/// Ask the user which role they would like to demote themself to.
case editOwnRole
/// Confirm that the user would like to reset the room's permissions.
case resetConfirmation
/// An error occurred.
case error
}
enum RoomRolesAndPermissionsScreenViewAction {