Enable the sliding sync timeline api. Start observing updates coming through the TimelineListener before addining a timeline listener on the Rust side

This commit is contained in:
Stefan Ceriu
2023-01-04 17:01:03 +02:00
committed by Stefan Ceriu
parent 77d62b2c72
commit cc51795bf0
2 changed files with 17 additions and 19 deletions
+8 -12
View File
@@ -36,11 +36,10 @@ class RoomProxy: RoomProxyProtocol {
private var backPaginationOutcome: PaginationOutcome? private var backPaginationOutcome: PaginationOutcome?
deinit { private var timelineObservationToken: StoppableSpawn?
room.removeTimeline()
#warning("We **should** use the slidingSyncRoom but it's not working properly yet") deinit {
// slidingSyncRoom.removeTimeline() timelineObservationToken?.cancel()
} }
init(slidingSyncRoom: SlidingSyncRoomProtocol, init(slidingSyncRoom: SlidingSyncRoomProtocol,
@@ -131,15 +130,12 @@ class RoomProxy: RoomProxyProtocol {
} }
func addTimelineListener(listener: TimelineListener) -> Result<Void, RoomProxyError> { func addTimelineListener(listener: TimelineListener) -> Result<Void, RoomProxyError> {
room.addTimelineListener(listener: listener) if let token = slidingSyncRoom.addTimelineListener(listener: listener) {
timelineObservationToken = token
return .success(()) return .success(())
} else {
#warning("We **should** use the slidingSyncRoom but it's not working properly yet") return .failure(.failedAddingTimelineListener)
// if let result = slidingSyncRoom.addTimelineListener(listener: listener), result == true { }
// return .success(())
// } else {
// return .failure(.failedAddingTimelineListener)
// }
} }
func paginateBackwards(count: UInt) async -> Result<UInt, RoomProxyError> { func paginateBackwards(count: UInt) async -> Result<UInt, RoomProxyError> {
@@ -51,18 +51,20 @@ class RoomTimelineProvider: RoomTimelineProviderProtocol {
Task { Task {
let roomTimelineListener = RoomTimelineListener() let roomTimelineListener = RoomTimelineListener()
roomTimelineListener
.itemsUpdatePublisher
.receive(on: DispatchQueue.main)
// .collect(.byTime(serialDispatchQueue, 0.25))
.sink { [weak self] in self?.updateItemsWithDiffs([$0]) }
.store(in: &cancellables)
switch await roomProxy.addTimelineListener(listener: roomTimelineListener) { switch await roomProxy.addTimelineListener(listener: roomTimelineListener) {
case .failure: case .failure:
MXLog.error("Failed adding timeline listener on room with identifier: \(await roomProxy.id)") MXLog.error("Failed adding timeline listener on room with identifier: \(await roomProxy.id)")
default: default:
break break
} }
roomTimelineListener
.itemsUpdatePublisher
.collect(.byTime(serialDispatchQueue, 0.25))
.sink { [weak self] in self?.updateItemsWithDiffs($0) }
.store(in: &cancellables)
} }
} }