mirror of
https://github.com/Novaloop-AG/element-x-ios.git
synced 2026-11-04 01:20:12 +00:00
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:
+23
-4
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user