From 3f5b1083f3cf26ae250e5d8710bc04888f237500 Mon Sep 17 00:00:00 2001 From: ganfra Date: Thu, 24 Sep 2020 11:26:08 +0200 Subject: [PATCH] Timeline: add a prefetch backward item --- .../detail/timeline/TimelineEventController.kt | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/vector/src/main/java/im/vector/app/features/home/room/detail/timeline/TimelineEventController.kt b/vector/src/main/java/im/vector/app/features/home/room/detail/timeline/TimelineEventController.kt index be59128c26..a04057882e 100644 --- a/vector/src/main/java/im/vector/app/features/home/room/detail/timeline/TimelineEventController.kt +++ b/vector/src/main/java/im/vector/app/features/home/room/detail/timeline/TimelineEventController.kt @@ -116,6 +116,7 @@ class TimelineEventController @Inject constructor(private val dateFormatter: Vec private var unreadState: UnreadState = UnreadState.Unknown private var positionOfReadMarker: Int? = null private var eventIdToHighlight: String? = null + private var previousModelsSize = 0 var callback: Callback? = null var timeline: Timeline? = null @@ -191,6 +192,20 @@ class TimelineEventController @Inject constructor(private val dateFormatter: Vec models.add(position, readMarker) } } + val shouldAdd = timeline?.hasMoreToLoad(Timeline.Direction.BACKWARDS) ?: false + if (shouldAdd) { + val indexOfPrefetchBackward = (previousModelsSize - 1) + .coerceAtLeast(0) + .coerceAtMost(models.size - 1) + + val loadingItem = LoadingItem_() + .id("prefetch_backward_loading${System.currentTimeMillis()}") + .showLoader(false) + .setVisibilityStateChangedListener(Timeline.Direction.BACKWARDS) + + models.add(indexOfPrefetchBackward, loadingItem) + } + previousModelsSize = models.size } fun update(viewState: RoomDetailViewState) {