mirror of
https://github.com/Novaloop-AG/element-x-ios.git
synced 2026-11-03 16:10:20 +00:00
Update the SDK and handle breaking changes. (#2527)
This commit is contained in:
@@ -106,11 +106,14 @@ class RoomMembersListScreenViewModel: RoomMembersListScreenViewModelType, RoomMe
|
||||
invitedMembers: roomMembersDetails.invitedMembers,
|
||||
bannedMembers: roomMembersDetails.bannedMembers,
|
||||
bindings: state.bindings)
|
||||
if let accountOwner = roomMembersDetails.accountOwner {
|
||||
self.state.canInviteUsers = accountOwner.canInviteUsers
|
||||
self.state.canKickUsers = accountOwner.canKickUsers
|
||||
self.state.canBanUsers = accountOwner.canBanUsers
|
||||
}
|
||||
|
||||
async let canInviteUsers = roomProxy.canUserInvite(userID: roomProxy.ownUserID)
|
||||
async let canKickUsers = roomProxy.canUserKick(userID: roomProxy.ownUserID)
|
||||
async let canBanUsers = roomProxy.canUserBan(userID: roomProxy.ownUserID)
|
||||
self.state.canInviteUsers = await canInviteUsers == .success(true)
|
||||
self.state.canKickUsers = await canKickUsers == .success(true)
|
||||
self.state.canBanUsers = await canBanUsers == .success(true)
|
||||
|
||||
if state.bindings.mode == .banned, roomMembersDetails.bannedMembers.isEmpty {
|
||||
state.bindings.mode = .members
|
||||
}
|
||||
@@ -125,13 +128,8 @@ class RoomMembersListScreenViewModel: RoomMembersListScreenViewModelType, RoomMe
|
||||
var invitedMembers: [RoomMemberDetails] = .init()
|
||||
var joinedMembers: [RoomMemberDetails] = .init()
|
||||
var bannedMembers: [RoomMemberDetails] = .init()
|
||||
var accountOwner: RoomMemberProxyProtocol?
|
||||
|
||||
for member in members {
|
||||
if accountOwner == nil, member.isAccountOwner {
|
||||
accountOwner = member
|
||||
}
|
||||
|
||||
switch member.membership {
|
||||
case .invite:
|
||||
invitedMembers.append(.init(withProxy: member))
|
||||
@@ -146,8 +144,7 @@ class RoomMembersListScreenViewModel: RoomMembersListScreenViewModelType, RoomMe
|
||||
|
||||
return .init(invitedMembers: invitedMembers,
|
||||
joinedMembers: joinedMembers,
|
||||
bannedMembers: bannedMembers.sorted { $0.id.localizedStandardCompare($1.id) == .orderedAscending }, // Re-sort ignoring display name.
|
||||
accountOwner: accountOwner)
|
||||
bannedMembers: bannedMembers.sorted { $0.id.localizedStandardCompare($1.id) == .orderedAscending }) // Re-sort ignoring display name.
|
||||
}
|
||||
.value
|
||||
}
|
||||
@@ -257,5 +254,4 @@ private struct RoomMembersDetails {
|
||||
var invitedMembers: [RoomMemberDetails]
|
||||
var joinedMembers: [RoomMemberDetails]
|
||||
var bannedMembers: [RoomMemberDetails]
|
||||
var accountOwner: RoomMemberProxyProtocol?
|
||||
}
|
||||
|
||||
@@ -142,10 +142,7 @@ struct RoomMembersListScreen_Previews: PreviewProvider, TestablePreview {
|
||||
initialMode: RoomMembersListScreenMode = .members) -> RoomMembersListScreenViewModel {
|
||||
let mockAdmin = RoomMemberProxyMock.mockAdmin
|
||||
|
||||
if isAdmin {
|
||||
mockAdmin.underlyingCanBanUsers = true
|
||||
mockAdmin.underlyingIsAccountOwner = true
|
||||
}
|
||||
let ownUserID = isAdmin ? mockAdmin.userID : RoomMemberProxyMock.mockMe.userID
|
||||
|
||||
var members: [RoomMemberProxyMock] = [
|
||||
.mockAlice,
|
||||
@@ -160,7 +157,10 @@ struct RoomMembersListScreen_Previews: PreviewProvider, TestablePreview {
|
||||
}
|
||||
|
||||
return RoomMembersListScreenViewModel(initialMode: initialMode,
|
||||
roomProxy: RoomProxyMock(with: .init(name: "Some room", members: members)),
|
||||
roomProxy: RoomProxyMock(with: .init(name: "Some room",
|
||||
members: members,
|
||||
ownUserID: ownUserID,
|
||||
canUserInvite: false)),
|
||||
mediaProvider: MockMediaProvider(),
|
||||
userIndicatorController: ServiceLocator.shared.userIndicatorController,
|
||||
appSettings: ServiceLocator.shared.settings)
|
||||
|
||||
Reference in New Issue
Block a user