1
0
mirror of https://github.com/vector-im/riotX-android synced 2025-10-06 00:02:48 +02:00

Fix last message of rooms in the room list.

This commit is contained in:
Onuray Sahin
2021-01-13 18:24:08 +03:00
parent 1c086a6c94
commit 6f87632905

View File

@@ -60,14 +60,18 @@ internal fun TimelineEventEntity.Companion.latestEvent(realm: Realm,
val roomEntity = RoomEntity.where(realm, roomId).findFirst() ?: return null
val sendingTimelineEvents = roomEntity.sendingTimelineEvents.where().filterEvents(filters)
val liveEvents = ChunkEntity.findLastForwardChunkOfRoom(realm, roomId)?.timelineEvents?.where()?.filterEvents(filters)
val query = if (includesSending && sendingTimelineEvents.findAll().isNotEmpty()) {
sendingTimelineEvents
val latestLiveEvent = liveEvents?.sort(TimelineEventEntityFields.DISPLAY_INDEX, Sort.DESCENDING)?.findFirst()
return if (includesSending) {
sendingTimelineEvents.findAll().toMutableList().maxByOrNull { it.root?.originServerTs ?: 0 }?.let {
maxOf(latestLiveEvent, it, {a, b -> ((a?.root?.originServerTs ?: 0) - (b?.root?.originServerTs ?: 0)).toInt() })
} ?: run {
latestLiveEvent
}
} else {
liveEvents
latestLiveEvent
}
return query
?.sort(TimelineEventEntityFields.DISPLAY_INDEX, Sort.DESCENDING)
?.findFirst()
}
internal fun RealmQuery<TimelineEventEntity>.filterEvents(filters: TimelineEventFilters): RealmQuery<TimelineEventEntity> {