@@ -42,12 +42,12 @@ internal class RealmSendingEventsDataSource(
42
42
43
43
private var roomEntity: RoomEntity ? = null
44
44
private var sendingTimelineEvents: RealmList <TimelineEventEntity >? = null
45
- private var frozenSendingTimelineEvents : RealmList < TimelineEventEntity > ? = null
45
+ private var mappedSendingTimelineEvents : List < TimelineEvent > = emptyList()
46
46
47
47
private val sendingTimelineEventsListener = RealmChangeListener <RealmList <TimelineEventEntity >> { events ->
48
48
if (events.isValid) {
49
49
uiEchoManager.onSentEventsInDatabase(events.map { it.eventId })
50
- updateFrozenResults (events)
50
+ mapSendingEvents (events)
51
51
onEventsUpdated(false )
52
52
}
53
53
}
@@ -57,38 +57,29 @@ internal class RealmSendingEventsDataSource(
57
57
roomEntity = RoomEntity .where(safeRealm, roomId = roomId).findFirst()
58
58
sendingTimelineEvents = roomEntity?.sendingTimelineEvents
59
59
sendingTimelineEvents?.addChangeListener(sendingTimelineEventsListener)
60
- updateFrozenResults (sendingTimelineEvents)
60
+ mapSendingEvents (sendingTimelineEvents)
61
61
}
62
62
63
63
override fun stop () {
64
64
sendingTimelineEvents?.removeChangeListener(sendingTimelineEventsListener)
65
- updateFrozenResults (null )
65
+ mapSendingEvents (null )
66
66
sendingTimelineEvents = null
67
67
roomEntity = null
68
68
}
69
69
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()
77
72
}
78
73
79
74
override fun buildSendingEvents (): List <TimelineEvent > {
80
75
val builtSendingEvents = mutableListOf<TimelineEvent >()
81
76
uiEchoManager.getInMemorySendingEvents()
82
77
.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)
92
83
93
84
return builtSendingEvents
94
85
}
0 commit comments