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) }