From 66aa9cd8881b9cb4ffffd010b530b9bebc2fbf50 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Mon, 8 Mar 2021 10:55:49 +0100 Subject: [PATCH] Cleanup --- .../session/room/timeline/DefaultTimeline.kt | 4 ++-- .../session/room/timeline/UIEchoManager.kt | 14 ++++++-------- 2 files changed, 8 insertions(+), 10 deletions(-) diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/room/timeline/DefaultTimeline.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/room/timeline/DefaultTimeline.kt index f3f7e5d162..33ce93b5a8 100644 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/room/timeline/DefaultTimeline.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/room/timeline/DefaultTimeline.kt @@ -162,7 +162,7 @@ internal class DefaultTimeline( // are still used for ui echo (relation like reaction) sendingEvents = roomEntity.sendingTimelineEvents.where()/*.filterEventsWithSettings()*/.findAll() sendingEvents.addChangeListener { events -> - uiEchoManager.sentEventsUpdated(events) + uiEchoManager.onSentEventsInDatabase(events.map { it.eventId }) postSnapshot() } @@ -339,7 +339,7 @@ internal class DefaultTimeline( override fun onLocalEchoUpdated(roomId: String, eventId: String, sendState: SendState) { if (roomId != this.roomId || !isLive) return - if (uiEchoManager.onLocalEchoUpdated(eventId, sendState)) { + if (uiEchoManager.onSendStateUpdated(eventId, sendState)) { postSnapshot() } } diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/room/timeline/UIEchoManager.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/room/timeline/UIEchoManager.kt index f37532744d..fdafdb161d 100644 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/room/timeline/UIEchoManager.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/room/timeline/UIEchoManager.kt @@ -16,7 +16,6 @@ package org.matrix.android.sdk.internal.session.room.timeline -import io.realm.RealmResults import org.matrix.android.sdk.api.session.events.model.EventType import org.matrix.android.sdk.api.session.events.model.RelationType import org.matrix.android.sdk.api.session.events.model.toModel @@ -26,7 +25,6 @@ import org.matrix.android.sdk.api.session.room.model.relation.ReactionContent import org.matrix.android.sdk.api.session.room.send.SendState import org.matrix.android.sdk.api.session.room.timeline.TimelineEvent import org.matrix.android.sdk.api.session.room.timeline.TimelineSettings -import org.matrix.android.sdk.internal.database.model.TimelineEventEntity import timber.log.Timber import java.util.Collections @@ -52,25 +50,25 @@ internal class UIEchoManager( private val inMemoryReactions = Collections.synchronizedMap>(HashMap()) - fun sentEventsUpdated(events: RealmResults) { + fun onSentEventsInDatabase(eventIds: List) { // Remove in memory as soon as they are known by database - events.forEach { te -> - inMemorySendingEvents.removeAll { te.eventId == it.eventId } + eventIds.forEach { eventId -> + inMemorySendingEvents.removeAll { eventId == it.eventId } } inMemorySendingStates.keys.removeAll { key -> - events.find { it.eventId == key } == null + eventIds.find { it == key } == null } inMemoryReactions.forEach { (_, uiEchoData) -> uiEchoData.removeAll { data -> // I remove the uiEcho, when the related event is not anymore in the sending list // (means that it is synced)! - events.find { it.eventId == data.localEchoId } == null + eventIds.find { it == data.localEchoId } == null } } } - fun onLocalEchoUpdated(eventId: String, sendState: SendState): Boolean { + fun onSendStateUpdated(eventId: String, sendState: SendState): Boolean { val existingState = inMemorySendingStates[eventId] inMemorySendingStates[eventId] = sendState return existingState != sendState