Remove process extension and provide isInit parameter to the processors.

This commit is contained in:
Benoit Marty 2024-09-11 16:10:29 +02:00 committed by Benoit Marty
parent f87422a022
commit fac919e933
3 changed files with 17 additions and 16 deletions

View file

@ -212,7 +212,7 @@ class RustTimeline(
) { timelineItems, hasMoreToLoadBackward, hasMoreToLoadForward, roomCreator, isInit ->
withContext(dispatcher) {
timelineItems
.process { items ->
.let { items ->
roomBeginningPostProcessor.process(
items = items,
isDm = matrixRoom.isDm,
@ -220,12 +220,20 @@ class RustTimeline(
hasMoreToLoadBackwards = hasMoreToLoadBackward,
)
}
.process(predicate = isInit) { items ->
loadingIndicatorsPostProcessor.process(items, hasMoreToLoadBackward, hasMoreToLoadForward)
.let { items ->
loadingIndicatorsPostProcessor.process(
items = items,
isInit = isInit,
hasMoreToLoadBackward = hasMoreToLoadBackward,
hasMoreToLoadForward = hasMoreToLoadForward
)
}
// Keep lastForwardIndicatorsPostProcessor last
.process(predicate = isInit) { items ->
lastForwardIndicatorsPostProcessor.process(items)
.let { items ->
lastForwardIndicatorsPostProcessor.process(
items = items,
isInit = isInit,
)
}
}
}.onStart {
@ -544,14 +552,3 @@ class RustTimeline(
}
}
}
private suspend fun List<MatrixTimelineItem>.process(
predicate: Boolean = true,
processor: suspend (List<MatrixTimelineItem>) -> List<MatrixTimelineItem>
): List<MatrixTimelineItem> {
return if (predicate) {
processor(this)
} else {
this
}
}

View file

@ -22,7 +22,9 @@ class LastForwardIndicatorsPostProcessor(
fun process(
items: List<MatrixTimelineItem>,
isInit: Boolean,
): List<MatrixTimelineItem> {
if (!isInit) return items
// We don't need to add the last forward indicator if we are not in the FOCUSED_ON_EVENT mode
if (mode != Timeline.Mode.FOCUSED_ON_EVENT) {
return items

View file

@ -16,9 +16,11 @@ import io.element.android.services.toolbox.api.systemclock.SystemClock
class LoadingIndicatorsPostProcessor(private val systemClock: SystemClock) {
fun process(
items: List<MatrixTimelineItem>,
isInit: Boolean,
hasMoreToLoadBackward: Boolean,
hasMoreToLoadForward: Boolean,
): List<MatrixTimelineItem> {
if (!isInit) return items
val shouldAddForwardLoadingIndicator = hasMoreToLoadForward && items.isNotEmpty()
val currentTimestamp = systemClock.epochMillis()
return buildList {