From 16eec4d024c0d22a74d393313a8e82ce9f5bfcac Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Tue, 30 Jun 2026 12:33:10 +0200 Subject: [PATCH] Simplify code --- .../datasource/TimelineMediaItemsFactory.kt | 25 +++++++++---------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/datasource/TimelineMediaItemsFactory.kt b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/datasource/TimelineMediaItemsFactory.kt index 1d26296269..86f7730780 100644 --- a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/datasource/TimelineMediaItemsFactory.kt +++ b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/datasource/TimelineMediaItemsFactory.kt @@ -44,7 +44,7 @@ class TimelineMediaItemsFactory( when (val currentTimelineItem = timelineItems[index]) { is MatrixTimelineItem.Event -> { val cachedItems = cache[currentTimelineItem.uniqueId] - val items = if (cachedItems != null && isItemUnchanged(currentTimelineItem, previousTimelineItems)) { + val items = if (cachedItems != null && currentTimelineItem.isUnchanged(previousTimelineItems)) { cachedItems } else { eventItemFactory.create(currentTimelineItem).also { newItems -> @@ -65,16 +65,15 @@ class TimelineMediaItemsFactory( _timelineItems.emit(newTimelineItemStates.toImmutableList()) } } - - private fun isItemUnchanged( - currentTimelineItem: MatrixTimelineItem.Event, - previousItems: List, - ): Boolean { - if (previousItems.isEmpty()) return false - val previousIndex = previousItems.indexOfFirst { it is MatrixTimelineItem.Event && it.uniqueId == currentTimelineItem.uniqueId } - if (previousIndex < 0) return false - val previousItem = previousItems[previousIndex] as? MatrixTimelineItem.Event ?: return false - return previousItem.event.eventId == currentTimelineItem.event.eventId && - previousItem.event.timestamp == currentTimelineItem.event.timestamp - } +} + +private fun MatrixTimelineItem.Event.isUnchanged( + previousItems: List, +): Boolean { + val previousItem = previousItems + .filterIsInstance() + .find { it.uniqueId == uniqueId } + return previousItem != null && + previousItem.event.eventId == event.eventId && + previousItem.event.timestamp == event.timestamp }