Rename isInit to isTimelineInitialized for clarity.
This commit is contained in:
@@ -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,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user