From c1ecf5cd1049661a564544db39d9f35ea0d697f9 Mon Sep 17 00:00:00 2001 From: Stefan Ceriu Date: Thu, 24 Mar 2022 14:48:38 +0200 Subject: [PATCH] Sort incoming messages client side, workaround backward stream issues (revisit later with new Rust implementation). --- ElementX/Sources/Services/Room/RoomProxy.swift | 5 ++++- .../Sources/Services/Timeline/RoomTimelineProvider.swift | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/ElementX/Sources/Services/Room/RoomProxy.swift b/ElementX/Sources/Services/Room/RoomProxy.swift index 6c3a386d9..140d9944b 100644 --- a/ElementX/Sources/Services/Room/RoomProxy.swift +++ b/ElementX/Sources/Services/Room/RoomProxy.swift @@ -151,10 +151,13 @@ class RoomProxy: RoomProxyProtocol, Equatable { 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) } + // 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 { callback?(.success(messages)) if self.lastMessage == nil { diff --git a/ElementX/Sources/Services/Timeline/RoomTimelineProvider.swift b/ElementX/Sources/Services/Timeline/RoomTimelineProvider.swift index 9f945f59a..b435e41e5 100644 --- a/ElementX/Sources/Services/Timeline/RoomTimelineProvider.swift +++ b/ElementX/Sources/Services/Timeline/RoomTimelineProvider.swift @@ -36,7 +36,7 @@ class RoomTimelineProvider: RoomTimelineProviderProtocol { self.roomProxy.paginateBackwards(count: count) { result in switch result { case .success(let messages): - self.messages.insert(contentsOf: messages.reversed(), at: 0) + self.messages.insert(contentsOf: messages, at: 0) callback?(.success((self.messages))) case .failure: callback?(.failure(.generic))