From 68ca0e9d4bd6170706e7b0b46d17143d2687c798 Mon Sep 17 00:00:00 2001 From: Valere Date: Tue, 14 Apr 2020 17:35:11 +0200 Subject: [PATCH] Fix / sending event not always updating --- CHANGES.md | 1 + .../internal/session/room/timeline/DefaultTimeline.kt | 9 ++++++--- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index 16b39cc6b1..25926b5937 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -25,6 +25,7 @@ Bugfix 🐛: - Cross- Signing | After signin in new session, verification paper trail in DM is off (#1191) - Failed to encrypt message in room (message stays in red), [thanks to pwr22] (#925) - Cross-Signing | web <-> riotX After QR code scan, gossiping fails (#1210) + - Local echo are not updated in timeline (for failed & encrypted states) Translations 🗣: - diff --git a/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/session/room/timeline/DefaultTimeline.kt b/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/session/room/timeline/DefaultTimeline.kt index 53bd620e51..f2bee734ce 100644 --- a/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/session/room/timeline/DefaultTimeline.kt +++ b/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/session/room/timeline/DefaultTimeline.kt @@ -171,10 +171,13 @@ internal class DefaultTimeline( val realm = Realm.getInstance(realmConfiguration) backgroundRealm.set(realm) - roomEntity = RoomEntity.where(realm, roomId = roomId).findFirst()?.also { - it.sendingTimelineEvents.addChangeListener { _ -> - postSnapshot() + roomEntity = RoomEntity.where(realm, roomId = roomId).findFirst() + roomEntity?.sendingTimelineEvents?.addChangeListener { events -> + // Remove in memory as soon as they are known by database + events.forEach { te -> + inMemorySendingEvents.removeAll { te.eventId == it.eventId } } + postSnapshot() } nonFilteredEvents = buildEventQuery(realm).sort(TimelineEventEntityFields.DISPLAY_INDEX, Sort.DESCENDING).findAll()