mirror of
https://github.com/Novaloop-AG/element-x-ios.git
synced 2026-11-03 06:31:27 +00:00
Room details: improve members count UX (#1050)
* Inject user id into room’s details * Refactor member fetch logic in RoomDetailsScreenViewModel * Refactor DI * Fetch members in RoomMembersListScreenViewModel * Fetch members in InviteUsersScreen * Use joinedMembersCount in room members list * Cleanup * Limit members refresh * Cleanup binding * Fix UT build errors * Fix RoomDetailsScreenViewModelTests * Fix RoomMembersListScreenViewModelTests * Fix UTs * Fix RoomDetailsScreenUITests * Refine RoomDetailsScreenViewModelTests * Add roomProxy extension * PR comments * Refactor room’s counter to Int * Improve updateMembers() performances * Fix memory leaks
This commit is contained in:
@@ -437,21 +437,21 @@ class RoomProxyMock: RoomProxyProtocol {
|
||||
set(value) { underlyingMembersPublisher = value }
|
||||
}
|
||||
var underlyingMembersPublisher: AnyPublisher<[RoomMemberProxyProtocol], Never>!
|
||||
var invitedMembersCount: UInt {
|
||||
var invitedMembersCount: Int {
|
||||
get { return underlyingInvitedMembersCount }
|
||||
set(value) { underlyingInvitedMembersCount = value }
|
||||
}
|
||||
var underlyingInvitedMembersCount: UInt!
|
||||
var joinedMembersCount: UInt {
|
||||
var underlyingInvitedMembersCount: Int!
|
||||
var joinedMembersCount: Int {
|
||||
get { return underlyingJoinedMembersCount }
|
||||
set(value) { underlyingJoinedMembersCount = value }
|
||||
}
|
||||
var underlyingJoinedMembersCount: UInt!
|
||||
var activeMembersCount: UInt {
|
||||
var underlyingJoinedMembersCount: Int!
|
||||
var activeMembersCount: Int {
|
||||
get { return underlyingActiveMembersCount }
|
||||
set(value) { underlyingActiveMembersCount = value }
|
||||
}
|
||||
var underlyingActiveMembersCount: UInt!
|
||||
var underlyingActiveMembersCount: Int!
|
||||
var updatesPublisher: AnyPublisher<TimelineDiff, Never> {
|
||||
get { return underlyingUpdatesPublisher }
|
||||
set(value) { underlyingUpdatesPublisher = value }
|
||||
|
||||
@@ -100,11 +100,12 @@ extension RoomMemberProxyMock {
|
||||
isIgnored: true))
|
||||
}
|
||||
|
||||
static func mockOwner(allowedStateEvents: [StateEventType]) -> RoomMemberProxyMock {
|
||||
static func mockOwner(allowedStateEvents: [StateEventType], canInviteUsers: Bool = true) -> RoomMemberProxyMock {
|
||||
RoomMemberProxyMock(with: .init(userID: "@foo:some.org",
|
||||
displayName: "User owner",
|
||||
membership: .join,
|
||||
isAccountOwner: true,
|
||||
canInviteUsers: canInviteUsers,
|
||||
canSendStateEvent: { allowedStateEvents.contains($0) }))
|
||||
}
|
||||
}
|
||||
|
||||
@@ -33,10 +33,11 @@ struct RoomProxyMockConfiguration {
|
||||
var hasUnreadNotifications = Bool.random()
|
||||
var members: [RoomMemberProxyProtocol]?
|
||||
var inviter: RoomMemberProxyMock?
|
||||
var memberForID: RoomMemberProxyMock = .mockMe
|
||||
|
||||
var invitedMembersCount: UInt = 100
|
||||
var joinedMembersCount: UInt = 50
|
||||
var activeMembersCount: UInt = 25
|
||||
var invitedMembersCount = 100
|
||||
var joinedMembersCount = 50
|
||||
var activeMembersCount = 25
|
||||
}
|
||||
|
||||
extension RoomProxyMock {
|
||||
@@ -77,5 +78,6 @@ extension RoomProxyMock {
|
||||
underlyingUpdatesPublisher = Empty(completeImmediately: false).eraseToAnyPublisher()
|
||||
setNameClosure = { _ in .success(()) }
|
||||
setTopicClosure = { _ in .success(()) }
|
||||
getMemberUserIDReturnValue = .success(configuration.memberForID)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user