diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/room/timeline/SendingEventsDataSource.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/room/timeline/SendingEventsDataSource.kt index a98de1c595..b7a2cf2fce 100644 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/room/timeline/SendingEventsDataSource.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/room/timeline/SendingEventsDataSource.kt @@ -46,7 +46,7 @@ internal class RealmSendingEventsDataSource( private val sendingTimelineEventsListener = RealmChangeListener> { events -> uiEchoManager.onSentEventsInDatabase(events.map { it.eventId }) - frozenSendingTimelineEvents = sendingTimelineEvents?.freeze() + updateFrozenResults(events) onEventsUpdated(false) } @@ -59,10 +59,17 @@ internal class RealmSendingEventsDataSource( override fun stop() { sendingTimelineEvents?.removeChangeListener(sendingTimelineEventsListener) + updateFrozenResults(null) sendingTimelineEvents = null roomEntity = null } + private fun updateFrozenResults(sendingEvents: RealmList?) { + // Makes sure to close the previous frozen realm + frozenSendingTimelineEvents?.realm?.close() + frozenSendingTimelineEvents = sendingEvents?.freeze() + } + override fun buildSendingEvents(): List { val builtSendingEvents = mutableListOf() uiEchoManager.getInMemorySendingEvents()