diff --git a/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/session/room/timeline/DefaultTimeline.kt b/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/session/room/timeline/DefaultTimeline.kt index 693855edbc..f42e50bdab 100644 --- a/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/session/room/timeline/DefaultTimeline.kt +++ b/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/session/room/timeline/DefaultTimeline.kt @@ -504,7 +504,6 @@ internal class DefaultTimeline( Timber.v("Should fetch $limit items $direction") cancelableBag += paginationTask .configureWith(params) { - this.retryCount = Int.MAX_VALUE this.constraints = TaskConstraints(connectedToNetwork = true) this.callback = object : MatrixCallback { override fun onSuccess(data: TokenChunkEventPersistor.Result) { @@ -524,6 +523,8 @@ internal class DefaultTimeline( } override fun onFailure(failure: Throwable) { + updateState(direction) { it.copy(isPaginating = false, requestedPaginationCount = 0) } + postSnapshot() Timber.v("Failure fetching $limit items $direction from pagination request") } } diff --git a/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/TimelineEventController.kt b/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/TimelineEventController.kt index 576b9fa0ba..0f187fa9e5 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/TimelineEventController.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/TimelineEventController.kt @@ -220,7 +220,7 @@ class TimelineEventController @Inject constructor(private val dateFormatter: Vec showingForwardLoader = LoadingItem_() .id("forward_loading_item_$timestamp") .setVisibilityStateChangedListener(Timeline.Direction.FORWARDS) - .addWhen(Timeline.Direction.FORWARDS) + .addWhenLoading(Timeline.Direction.FORWARDS) val timelineModels = getModels() add(timelineModels) @@ -230,7 +230,7 @@ class TimelineEventController @Inject constructor(private val dateFormatter: Vec LoadingItem_() .id("backward_loading_item_$timestamp") .setVisibilityStateChangedListener(Timeline.Direction.BACKWARDS) - .addWhen(Timeline.Direction.BACKWARDS) + .addWhenLoading(Timeline.Direction.BACKWARDS) } } @@ -247,6 +247,7 @@ class TimelineEventController @Inject constructor(private val dateFormatter: Vec currentSnapshot = newSnapshot val diffResult = DiffUtil.calculateDiff(diffCallback) diffResult.dispatchUpdatesTo(listUpdateCallback) + requestDelayedModelBuild(100) inSubmitList = false } } @@ -319,7 +320,7 @@ class TimelineEventController @Inject constructor(private val dateFormatter: Vec /** * Return true if added */ - private fun LoadingItem_.addWhen(direction: Timeline.Direction): Boolean { + private fun LoadingItem_.addWhenLoading(direction: Timeline.Direction): Boolean { val shouldAdd = timeline?.hasMoreToLoad(direction) ?: false addIf(shouldAdd, this@TimelineEventController) return shouldAdd