Rename isInit to isTimelineInitialized for clarity.

This commit is contained in:
Benoit Marty
2024-09-12 16:27:52 +02:00
parent ba4ef08756
commit 4cfda8e4aa
4 changed files with 18 additions and 14 deletions

View File

@@ -86,7 +86,7 @@ class RustTimeline(
onNewSyncedEvent: () -> Unit,
) : Timeline {
private val initLatch = CompletableDeferred<Unit>()
private val isInit = MutableStateFlow(false)
private val isTimelineInitialized = MutableStateFlow(false)
private val _timelineItems: MutableStateFlow<List<MatrixTimelineItem>> =
MutableStateFlow(emptyList())
@@ -110,7 +110,7 @@ class RustTimeline(
timelineCoroutineScope = coroutineScope,
timelineDiffProcessor = timelineDiffProcessor,
initLatch = initLatch,
isInit = isInit,
isTimelineInitialized = isTimelineInitialized,
dispatcher = dispatcher,
onNewSyncedEvent = onNewSyncedEvent,
)
@@ -189,7 +189,7 @@ class RustTimeline(
}
private fun canPaginate(direction: Timeline.PaginationDirection): Boolean {
if (!isInit.value) return false
if (!isTimelineInitialized.value) return false
return when (direction) {
Timeline.PaginationDirection.BACKWARDS -> backPaginationStatus.value.canPaginate
Timeline.PaginationDirection.FORWARDS -> forwardPaginationStatus.value.canPaginate
@@ -208,8 +208,12 @@ class RustTimeline(
backPaginationStatus.map { it.hasMoreToLoad }.distinctUntilChanged(),
forwardPaginationStatus.map { it.hasMoreToLoad }.distinctUntilChanged(),
matrixRoom.roomInfoFlow.map { it.creator },
isInit,
) { timelineItems, hasMoreToLoadBackward, hasMoreToLoadForward, roomCreator, isInit ->
isTimelineInitialized,
) { timelineItems,
hasMoreToLoadBackward,
hasMoreToLoadForward,
roomCreator,
isTimelineInitialized ->
withContext(dispatcher) {
timelineItems
.let { items ->
@@ -223,7 +227,7 @@ class RustTimeline(
.let { items ->
loadingIndicatorsPostProcessor.process(
items = items,
isInit = isInit,
isTimelineInitialized = isTimelineInitialized,
hasMoreToLoadBackward = hasMoreToLoadBackward,
hasMoreToLoadForward = hasMoreToLoadForward
)
@@ -232,7 +236,7 @@ class RustTimeline(
.let { items ->
lastForwardIndicatorsPostProcessor.process(
items = items,
isInit = isInit,
isTimelineInitialized = isTimelineInitialized,
)
}
}

View File

@@ -38,7 +38,7 @@ internal class TimelineItemsSubscriber(
private val timeline: Timeline,
private val timelineDiffProcessor: MatrixTimelineDiffProcessor,
private val initLatch: CompletableDeferred<Unit>,
private val isInit: MutableStateFlow<Boolean>,
private val isTimelineInitialized: MutableStateFlow<Boolean>,
private val onNewSyncedEvent: () -> Unit,
) {
private var subscriptionCount = 0
@@ -85,13 +85,13 @@ internal class TimelineItemsSubscriber(
ensureActive()
timelineDiffProcessor.postItems(it)
}
isInit.value = true
isTimelineInitialized.value = true
initLatch.complete(Unit)
}
private suspend fun postDiffs(diffs: List<TimelineDiff>) {
val diffsToProcess = diffs.toMutableList()
if (!isInit.value) {
if (!isTimelineInitialized.value) {
val resetDiff = diffsToProcess.firstOrNull { it.change() == TimelineChange.RESET }
if (resetDiff != null) {
// Keep using the postItems logic so we can post the timelineItems asap.

View File

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