From 907a786b1a01d246918fb487fcd7078a32125bd2 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Wed, 20 May 2020 09:16:31 +0200 Subject: [PATCH] Uploads: load element until loader not displayed anymore --- .../roomprofile/uploads/files/UploadsFileController.kt | 5 ++++- .../roomprofile/uploads/media/UploadsMediaController.kt | 7 +++++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/vector/src/main/java/im/vector/riotx/features/roomprofile/uploads/files/UploadsFileController.kt b/vector/src/main/java/im/vector/riotx/features/roomprofile/uploads/files/UploadsFileController.kt index e37d2e0c15..0ad173be88 100644 --- a/vector/src/main/java/im/vector/riotx/features/roomprofile/uploads/files/UploadsFileController.kt +++ b/vector/src/main/java/im/vector/riotx/features/roomprofile/uploads/files/UploadsFileController.kt @@ -51,6 +51,8 @@ class UploadsFileController @Inject constructor( var listener: Listener? = null + private var idx = 0 + init { setData(null) } @@ -92,7 +94,8 @@ class UploadsFileController @Inject constructor( if (data.hasMore) { loadingItem { - id("loadMore") + // Always use a different id, because we can be notified several times of visibility state changed + id("loadMore${idx++}") onVisibilityStateChanged { _, _, visibilityState -> if (visibilityState == VisibilityState.VISIBLE) { listener?.loadMore() diff --git a/vector/src/main/java/im/vector/riotx/features/roomprofile/uploads/media/UploadsMediaController.kt b/vector/src/main/java/im/vector/riotx/features/roomprofile/uploads/media/UploadsMediaController.kt index 41711359d2..c6e3666fb5 100644 --- a/vector/src/main/java/im/vector/riotx/features/roomprofile/uploads/media/UploadsMediaController.kt +++ b/vector/src/main/java/im/vector/riotx/features/roomprofile/uploads/media/UploadsMediaController.kt @@ -58,7 +58,9 @@ class UploadsMediaController @Inject constructor( var listener: Listener? = null - private val itemSize = dimensionConverter.dpToPx(64) + private var idx = 0 + + private val itemSize = dimensionConverter.dpToPx(IMAGE_SIZE_DP) init { setData(null) @@ -101,7 +103,8 @@ class UploadsMediaController @Inject constructor( if (data.hasMore) { squareLoadingItem { - id("loadMore") + // Always use a different id, because we can be notified several times of visibility state changed + id("loadMore${idx++}") onVisibilityStateChanged { _, _, visibilityState -> if (visibilityState == VisibilityState.VISIBLE) { listener?.loadMore()