Prevent mapping members on the main queue inside the room screen view model

This commit is contained in:
Stefan Ceriu
2023-09-20 10:31:01 +03:00
committed by Stefan Ceriu
parent c2a1560b1d
commit 82981f33e9
8 changed files with 19 additions and 17 deletions
@@ -119,9 +119,10 @@ class InviteUsersScreenViewModel: InviteUsersScreenViewModelType, InviteUsersScr
hideLoader()
}
roomProxy.membersPublisher
roomProxy.members
.filter { !$0.isEmpty }
.first()
.receive(on: DispatchQueue.main)
.sink { [weak self] members in
self?.buildMembershipStateIfNeeded(members: members)
}
@@ -145,7 +145,8 @@ class RoomDetailsScreenViewModel: RoomDetailsScreenViewModelType, RoomDetailsScr
return
}
roomProxy.membersPublisher
roomProxy.members
.receive(on: DispatchQueue.main)
.sink { [weak self] members in
guard let self else { return }
let dmRecipient = members.first(where: { !$0.isAccountOwner })
@@ -67,8 +67,9 @@ class RoomMembersListScreenViewModel: RoomMembersListScreenViewModelType, RoomMe
hideLoader()
}
roomProxy.membersPublisher
roomProxy.members
.filter { !$0.isEmpty }
.receive(on: DispatchQueue.main)
.sink { [weak self] members in
self?.updateState(members: members)
}
@@ -210,12 +210,13 @@ class RoomScreenViewModel: RoomScreenViewModelType, RoomScreenViewModelProtocol
.weakAssign(to: \.state.readReceiptsEnabled, on: self)
.store(in: &cancellables)
roomProxy.membersPublisher
roomProxy.members
.map { members in
members.reduce(into: [String: RoomMemberState]()) { dictionary, member in
dictionary[member.userID] = RoomMemberState(displayName: member.displayName, avatarURL: member.avatarURL)
}
}
.receive(on: DispatchQueue.main)
.weakAssign(to: \.state.members, on: self)
.store(in: &cancellables)
}