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
+9 -13
View File
@@ -36,11 +36,10 @@ class RoomProxy: RoomProxyProtocol {
private var backPaginationOutcome: PaginationOutcome?
private var timelineObservationToken: StoppableSpawn?
deinit {
room.removeTimeline()
#warning("We **should** use the slidingSyncRoom but it's not working properly yet")
// slidingSyncRoom.removeTimeline()
timelineObservationToken?.cancel()
}
init(slidingSyncRoom: SlidingSyncRoomProtocol,
@@ -131,15 +130,12 @@ class RoomProxy: RoomProxyProtocol {
}
func addTimelineListener(listener: TimelineListener) -> Result<Void, RoomProxyError> {
room.addTimelineListener(listener: listener)
return .success(())
#warning("We **should** use the slidingSyncRoom but it's not working properly yet")
// if let result = slidingSyncRoom.addTimelineListener(listener: listener), result == true {
// return .success(())
// } else {
// return .failure(.failedAddingTimelineListener)
// }
if let token = slidingSyncRoom.addTimelineListener(listener: listener) {
timelineObservationToken = token
return .success(())
} else {
return .failure(.failedAddingTimelineListener)
}
}
func paginateBackwards(count: UInt) async -> Result<UInt, RoomProxyError> {
@@ -51,18 +51,20 @@ class RoomTimelineProvider: RoomTimelineProviderProtocol {
Task {
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) {
case .failure:
MXLog.error("Failed adding timeline listener on room with identifier: \(await roomProxy.id)")
default:
break
}
roomTimelineListener
.itemsUpdatePublisher
.collect(.byTime(serialDispatchQueue, 0.25))
.sink { [weak self] in self?.updateItemsWithDiffs($0) }
.store(in: &cancellables)
}
}