Sort incoming messages client side, workaround backward stream issues (revisit later with new Rust implementation).

This commit is contained in:
Stefan Ceriu
2022-03-24 14:48:38 +02:00
parent cf42d61d27
commit 762b497940
2 changed files with 5 additions and 2 deletions
@@ -151,10 +151,13 @@ class RoomProxy: RoomProxyProtocol, Equatable {
return return
} }
let messages = backwardStream.paginateBackwards(count: UInt64(count)).map { message in var messages = backwardStream.paginateBackwards(count: UInt64(count)).map { message in
self.messageFactory.buildRoomMessageFrom(message) self.messageFactory.buildRoomMessageFrom(message)
} }
// FIXME: Something wrong on the Rust side and these come in out of order sometimes.
messages = messages.sorted(by: { $0.originServerTs < $1.originServerTs })
DispatchQueue.main.async { DispatchQueue.main.async {
callback?(.success(messages)) callback?(.success(messages))
if self.lastMessage == nil { if self.lastMessage == nil {
@@ -36,7 +36,7 @@ class RoomTimelineProvider: RoomTimelineProviderProtocol {
self.roomProxy.paginateBackwards(count: count) { result in self.roomProxy.paginateBackwards(count: count) { result in
switch result { switch result {
case .success(let messages): case .success(let messages):
self.messages.insert(contentsOf: messages.reversed(), at: 0) self.messages.insert(contentsOf: messages, at: 0)
callback?(.success((self.messages))) callback?(.success((self.messages)))
case .failure: case .failure:
callback?(.failure(.generic)) callback?(.failure(.generic))