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
@@ -2750,6 +2750,44 @@ class RoomProxyMock: RoomProxyProtocol {
return applyPowerLevelChangesReturnValue
}
}
//MARK: - resetPowerLevels
var resetPowerLevelsCallsCount = 0
var resetPowerLevelsCalled: Bool {
return resetPowerLevelsCallsCount > 0
}
var resetPowerLevelsReturnValue: Result<RoomPowerLevels, RoomProxyError>!
var resetPowerLevelsClosure: (() async -> Result<RoomPowerLevels, RoomProxyError>)?
func resetPowerLevels() async -> Result<RoomPowerLevels, RoomProxyError> {
resetPowerLevelsCallsCount += 1
if let resetPowerLevelsClosure = resetPowerLevelsClosure {
return await resetPowerLevelsClosure()
} else {
return resetPowerLevelsReturnValue
}
}
//MARK: - suggestedRole
var suggestedRoleForCallsCount = 0
var suggestedRoleForCalled: Bool {
return suggestedRoleForCallsCount > 0
}
var suggestedRoleForReceivedUserID: String?
var suggestedRoleForReceivedInvocations: [String] = []
var suggestedRoleForReturnValue: Result<RoomMemberRole, RoomProxyError>!
var suggestedRoleForClosure: ((String) async -> Result<RoomMemberRole, RoomProxyError>)?
func suggestedRole(for userID: String) async -> Result<RoomMemberRole, RoomProxyError> {
suggestedRoleForCallsCount += 1
suggestedRoleForReceivedUserID = userID
suggestedRoleForReceivedInvocations.append(userID)
if let suggestedRoleForClosure = suggestedRoleForClosure {
return await suggestedRoleForClosure(userID)
} else {
return suggestedRoleForReturnValue
}
}
//MARK: - updatePowerLevelsForUsers
var updatePowerLevelsForUsersCallsCount = 0