Remove process extension and provide isInit parameter to the processors.
This commit is contained in:
parent
6087b15560
commit
ba4ef08756
3 changed files with 17 additions and 16 deletions
|
|
@ -212,7 +212,7 @@ class RustTimeline(
|
||||||
) { timelineItems, hasMoreToLoadBackward, hasMoreToLoadForward, roomCreator, isInit ->
|
) { timelineItems, hasMoreToLoadBackward, hasMoreToLoadForward, roomCreator, isInit ->
|
||||||
withContext(dispatcher) {
|
withContext(dispatcher) {
|
||||||
timelineItems
|
timelineItems
|
||||||
.process { items ->
|
.let { items ->
|
||||||
roomBeginningPostProcessor.process(
|
roomBeginningPostProcessor.process(
|
||||||
items = items,
|
items = items,
|
||||||
isDm = matrixRoom.isDm,
|
isDm = matrixRoom.isDm,
|
||||||
|
|
@ -220,12 +220,20 @@ class RustTimeline(
|
||||||
hasMoreToLoadBackwards = hasMoreToLoadBackward,
|
hasMoreToLoadBackwards = hasMoreToLoadBackward,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
.process(predicate = isInit) { items ->
|
.let { items ->
|
||||||
loadingIndicatorsPostProcessor.process(items, hasMoreToLoadBackward, hasMoreToLoadForward)
|
loadingIndicatorsPostProcessor.process(
|
||||||
|
items = items,
|
||||||
|
isInit = isInit,
|
||||||
|
hasMoreToLoadBackward = hasMoreToLoadBackward,
|
||||||
|
hasMoreToLoadForward = hasMoreToLoadForward
|
||||||
|
)
|
||||||
}
|
}
|
||||||
// Keep lastForwardIndicatorsPostProcessor last
|
// Keep lastForwardIndicatorsPostProcessor last
|
||||||
.process(predicate = isInit) { items ->
|
.let { items ->
|
||||||
lastForwardIndicatorsPostProcessor.process(items)
|
lastForwardIndicatorsPostProcessor.process(
|
||||||
|
items = items,
|
||||||
|
isInit = isInit,
|
||||||
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}.onStart {
|
}.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(
|
fun process(
|
||||||
items: List<MatrixTimelineItem>,
|
items: List<MatrixTimelineItem>,
|
||||||
|
isInit: Boolean,
|
||||||
): List<MatrixTimelineItem> {
|
): 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
|
// 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) {
|
if (mode != Timeline.Mode.FOCUSED_ON_EVENT) {
|
||||||
return items
|
return items
|
||||||
|
|
|
||||||
|
|
@ -16,9 +16,11 @@ import io.element.android.services.toolbox.api.systemclock.SystemClock
|
||||||
class LoadingIndicatorsPostProcessor(private val systemClock: SystemClock) {
|
class LoadingIndicatorsPostProcessor(private val systemClock: SystemClock) {
|
||||||
fun process(
|
fun process(
|
||||||
items: List<MatrixTimelineItem>,
|
items: List<MatrixTimelineItem>,
|
||||||
|
isInit: Boolean,
|
||||||
hasMoreToLoadBackward: Boolean,
|
hasMoreToLoadBackward: Boolean,
|
||||||
hasMoreToLoadForward: Boolean,
|
hasMoreToLoadForward: Boolean,
|
||||||
): List<MatrixTimelineItem> {
|
): List<MatrixTimelineItem> {
|
||||||
|
if (!isInit) return items
|
||||||
val shouldAddForwardLoadingIndicator = hasMoreToLoadForward && items.isNotEmpty()
|
val shouldAddForwardLoadingIndicator = hasMoreToLoadForward && items.isNotEmpty()
|
||||||
val currentTimestamp = systemClock.epochMillis()
|
val currentTimestamp = systemClock.epochMillis()
|
||||||
return buildList {
|
return buildList {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue