@@ -42,12 +42,12 @@ internal class RealmSendingEventsDataSource(
4242
4343 private var roomEntity: RoomEntity ? = null
4444 private var sendingTimelineEvents: RealmList <TimelineEventEntity >? = null
45- private var frozenSendingTimelineEvents : RealmList < TimelineEventEntity > ? = null
45+ private var mappedSendingTimelineEvents : List < TimelineEvent > = emptyList()
4646
4747 private val sendingTimelineEventsListener = RealmChangeListener <RealmList <TimelineEventEntity >> { events ->
4848 if (events.isValid) {
4949 uiEchoManager.onSentEventsInDatabase(events.map { it.eventId })
50- updateFrozenResults (events)
50+ mapSendingEvents (events)
5151 onEventsUpdated(false )
5252 }
5353 }
@@ -57,38 +57,29 @@ internal class RealmSendingEventsDataSource(
5757 roomEntity = RoomEntity .where(safeRealm, roomId = roomId).findFirst()
5858 sendingTimelineEvents = roomEntity?.sendingTimelineEvents
5959 sendingTimelineEvents?.addChangeListener(sendingTimelineEventsListener)
60- updateFrozenResults (sendingTimelineEvents)
60+ mapSendingEvents (sendingTimelineEvents)
6161 }
6262
6363 override fun stop () {
6464 sendingTimelineEvents?.removeChangeListener(sendingTimelineEventsListener)
65- updateFrozenResults (null )
65+ mapSendingEvents (null )
6666 sendingTimelineEvents = null
6767 roomEntity = null
6868 }
6969
70- private fun updateFrozenResults (sendingEvents : RealmList <TimelineEventEntity >? ) {
71- // Makes sure to close the previous frozen realm
72- if (frozenSendingTimelineEvents?.isValid == true ) {
73- frozenSendingTimelineEvents?.realm?.close()
74- }
75- // Do not freeze empty list
76- frozenSendingTimelineEvents = sendingEvents?.takeIf { it.isNotEmpty() }?.freeze()
70+ private fun mapSendingEvents (sendingEvents : RealmList <TimelineEventEntity >? ) {
71+ mappedSendingTimelineEvents = sendingEvents?.map { timelineEventMapper.map(it) }.orEmpty()
7772 }
7873
7974 override fun buildSendingEvents (): List <TimelineEvent > {
8075 val builtSendingEvents = mutableListOf<TimelineEvent >()
8176 uiEchoManager.getInMemorySendingEvents()
8277 .addWithUiEcho(builtSendingEvents)
83- if (frozenSendingTimelineEvents?.isValid == true ) {
84- frozenSendingTimelineEvents
85- ?.filter { timelineEvent ->
86- builtSendingEvents.none { it.eventId == timelineEvent.eventId }
87- }
88- ?.map {
89- timelineEventMapper.map(it)
90- }?.addWithUiEcho(builtSendingEvents)
91- }
78+ mappedSendingTimelineEvents
79+ .filter { timelineEvent ->
80+ builtSendingEvents.none { it.eventId == timelineEvent.eventId }
81+ }
82+ .addWithUiEcho(builtSendingEvents)
9283
9384 return builtSendingEvents
9485 }
0 commit comments