From e334100b7527115fff6a032b2df578164bcd5cd6 Mon Sep 17 00:00:00 2001 From: ganfra Date: Wed, 12 Jul 2023 22:44:42 +0200 Subject: [PATCH] Timeline: split the initial item list in small chunks to post items asap --- .../libraries/matrix/impl/timeline/RustMatrixTimeline.kt | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/timeline/RustMatrixTimeline.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/timeline/RustMatrixTimeline.kt index de97d48a8a..2c245c7164 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/timeline/RustMatrixTimeline.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/timeline/RustMatrixTimeline.kt @@ -44,6 +44,7 @@ import org.matrix.rustcomponents.sdk.TimelineItem import timber.log.Timber import java.util.concurrent.atomic.AtomicBoolean +private const val INITIAL_MAX_SIZE = 50 class RustMatrixTimeline( roomCoroutineScope: CoroutineScope, @@ -84,7 +85,10 @@ class RustMatrixTimeline( override val timelineItems: Flow> = _timelineItems.sample(50) internal suspend fun postItems(items: List) { - timelineDiffProcessor.postItems(items) + // Split the initial items in multiple list as there is no pagination in the cached data, so we can post timelineItems asap. + items.chunked(INITIAL_MAX_SIZE).reversed().forEach { + timelineDiffProcessor.postItems(it) + } isInit.set(true) initLatch.complete(Unit) }