Adopt new members and sync indicator APIs

This commit is contained in:
Stefan Ceriu
2023-09-18 12:54:14 +03:00
committed by Stefan Ceriu
parent b26867c49e
commit de1b020ea1
2 changed files with 18 additions and 19 deletions

View File

@@ -507,7 +507,7 @@ class ClientProxy: ClientProxyProtocol {
}
private func createRoomListLoadingStateUpdateObserver(_ roomListService: RoomListService) -> TaskHandle {
roomListService.syncIndicator(listener: RoomListServiceSyncIndicatorListenerProxy { [weak self] state in
roomListService.syncIndicator(delayBeforeShowingInMs: 1000, delayBeforeHidingInMs: 0, listener: RoomListServiceSyncIndicatorListenerProxy { [weak self] state in
guard let self else { return }
switch state {

View File

@@ -511,10 +511,13 @@ class RoomProxy: RoomProxyProtocol {
func updateMembers() async {
do {
let roomMembersProxies = try await Task.dispatch(on: .global()) {
try self.room.members().map {
RoomMemberProxy(member: $0, backgroundTaskService: self.backgroundTaskService)
}
let membersIterator = try await room.members()
guard let members = membersIterator.nextChunk(chunkSize: membersIterator.len()) else {
return
}
let roomMembersProxies = members.map {
RoomMemberProxy(member: $0, backgroundTaskService: self.backgroundTaskService)
}
membersSubject.value = roomMembersProxies
@@ -528,14 +531,12 @@ class RoomProxy: RoomProxyProtocol {
defer {
sendMessageBackgroundTask?.stop()
}
return await Task.dispatch(on: lowPriorityDispatchQueue) {
do {
let member = try self.room.member(userId: userID)
return .success(RoomMemberProxy(member: member, backgroundTaskService: self.backgroundTaskService))
} catch {
return .failure(.failedRetrievingMember)
}
do {
let member = try await room.member(userId: userID)
return .success(RoomMemberProxy(member: member, backgroundTaskService: backgroundTaskService))
} catch {
return .failure(.failedRetrievingMember)
}
}
@@ -728,12 +729,10 @@ class RoomProxy: RoomProxyProtocol {
/// Force the timeline to load member details so it can populate sender profiles whenever we add a timeline listener
/// This should become automatic on the RustSDK side at some point
private func fetchMembers() async {
await Task.dispatch(on: .global()) {
do {
_ = try self.room.fetchMembers()
} catch {
MXLog.error("Failed fetching members: \(error)")
}
do {
try await room.fetchMembers()
} catch {
MXLog.error("Failed fetching members: \(error)")
}
}