Fix various bugs in the moderation feature. (#2608)

* Fix search field string.

* Show your own user as an Admin when changing roles.

* Also show invited users when changing roles.

* Don't allow admin's to kick/ban other admins or themselves.

* Fix a bug when left members were counted as admins/moderators.

* Show when a member is pending.

* Add sections to the change role screen.
This commit is contained in:
Doug
2024-03-27 10:33:40 +00:00
committed by GitHub
parent bb725db6bb
commit e424a02a2b
51 changed files with 413 additions and 148 deletions
@@ -40,7 +40,9 @@ class RoomChangeRolesScreenViewModel: RoomChangeRolesScreenViewModelType, RoomCh
self.analytics = analytics
super.init(initialViewState: RoomChangeRolesScreenViewState(mode: mode,
members: [],
administrators: [],
moderators: [],
users: [],
bindings: .init()))
roomProxy.membersPublisher
@@ -82,10 +84,27 @@ class RoomChangeRolesScreenViewModel: RoomChangeRolesScreenViewModelType, RoomCh
// MARK: - Private
private func updateMembers(_ members: [RoomMemberProxyProtocol]) {
state.members = members.sorted().compactMap { member in
guard member.membership == .join, member.userID != roomProxy.ownUserID else { return nil }
return RoomMemberDetails(withProxy: member)
var administrators = [RoomMemberDetails]()
var moderators = [RoomMemberDetails]()
var users = [RoomMemberDetails]()
for member in members.sorted() {
guard member.isActive else { continue }
let memberDetails = RoomMemberDetails(withProxy: member)
switch member.role {
case .administrator:
administrators.append(memberDetails)
case .moderator:
moderators.append(memberDetails)
case .user:
users.append(memberDetails)
}
}
state.administrators = administrators
state.moderators = moderators
state.users = users
}
private func toggleMember(_ member: RoomMemberDetails) {