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 40735fba39
commit 48eb5c421d
2 changed files with 18 additions and 19 deletions
@@ -507,7 +507,7 @@ class ClientProxy: ClientProxyProtocol {
} }
private func createRoomListLoadingStateUpdateObserver(_ roomListService: RoomListService) -> TaskHandle { 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 } guard let self else { return }
switch state { switch state {
+9 -10
View File
@@ -511,10 +511,13 @@ class RoomProxy: RoomProxyProtocol {
func updateMembers() async { func updateMembers() async {
do { do {
let roomMembersProxies = try await Task.dispatch(on: .global()) { let membersIterator = try await room.members()
try self.room.members().map { guard let members = membersIterator.nextChunk(chunkSize: membersIterator.len()) else {
RoomMemberProxy(member: $0, backgroundTaskService: self.backgroundTaskService) return
} }
let roomMembersProxies = members.map {
RoomMemberProxy(member: $0, backgroundTaskService: self.backgroundTaskService)
} }
membersSubject.value = roomMembersProxies membersSubject.value = roomMembersProxies
@@ -529,15 +532,13 @@ class RoomProxy: RoomProxyProtocol {
sendMessageBackgroundTask?.stop() sendMessageBackgroundTask?.stop()
} }
return await Task.dispatch(on: lowPriorityDispatchQueue) {
do { do {
let member = try self.room.member(userId: userID) let member = try await room.member(userId: userID)
return .success(RoomMemberProxy(member: member, backgroundTaskService: self.backgroundTaskService)) return .success(RoomMemberProxy(member: member, backgroundTaskService: backgroundTaskService))
} catch { } catch {
return .failure(.failedRetrievingMember) return .failure(.failedRetrievingMember)
} }
} }
}
func ignoreUser(_ userID: String) async -> Result<Void, RoomProxyError> { func ignoreUser(_ userID: String) async -> Result<Void, RoomProxyError> {
sendMessageBackgroundTask = await backgroundTaskService.startBackgroundTask(withName: backgroundTaskName, isReusable: true) sendMessageBackgroundTask = await backgroundTaskService.startBackgroundTask(withName: backgroundTaskName, isReusable: true)
@@ -728,14 +729,12 @@ class RoomProxy: RoomProxyProtocol {
/// Force the timeline to load member details so it can populate sender profiles whenever we add a timeline listener /// 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 /// This should become automatic on the RustSDK side at some point
private func fetchMembers() async { private func fetchMembers() async {
await Task.dispatch(on: .global()) {
do { do {
_ = try self.room.fetchMembers() try await room.fetchMembers()
} catch { } catch {
MXLog.error("Failed fetching members: \(error)") MXLog.error("Failed fetching members: \(error)")
} }
} }
}
private func update(displayName: String) { private func update(displayName: String) {
self.displayName = displayName self.displayName = displayName