Remove process extension and provide isInit parameter to the processors.
This commit is contained in:
parent
f87422a022
commit
fac919e933
3 changed files with 17 additions and 16 deletions
|
|
@ -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
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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 {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue