mirror of
https://github.com/Novaloop-AG/element-x-android.git
synced 2026-11-03 16:10:00 +00:00
Remove process extension and provide isInit parameter to the processors.
This commit is contained in:
committed by
Benoit Marty
parent
f87422a022
commit
fac919e933
+13
-16
@@ -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
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|||||||
+2
@@ -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
|
||||||
|
|||||||
+2
@@ -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 {
|
||||||
|
|||||||
Reference in New Issue
Block a user