Browse Source

Timeline: split the initial item list in small chunks to post items asap

pull/863/head
ganfra 1 year ago
parent
commit
e334100b75
  1. 6
      libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/timeline/RustMatrixTimeline.kt

6
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 @@ -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( @@ -84,7 +85,10 @@ class RustMatrixTimeline(
override val timelineItems: Flow<List<MatrixTimelineItem>> = _timelineItems.sample(50)
internal suspend fun postItems(items: List<TimelineItem>) {
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)
}

Loading…
Cancel
Save