From ac075f055836957b1df7ad470649911e4717873e Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Wed, 18 Dec 2024 12:00:37 +0100 Subject: [PATCH] Gallery: rework load more management --- .../impl/gallery/MediaGalleryView.kt | 39 ++++++++----------- 1 file changed, 17 insertions(+), 22 deletions(-) diff --git a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/gallery/MediaGalleryView.kt b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/gallery/MediaGalleryView.kt index 7ce847a118..7f7952f1a6 100644 --- a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/gallery/MediaGalleryView.kt +++ b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/gallery/MediaGalleryView.kt @@ -299,16 +299,11 @@ private fun MediaGalleryFilesList( is MediaItem.Video -> { // Should not happen } - is MediaItem.LoadingIndicator -> { - LoadingMoreIndicator( - modifier = Modifier.animateItem(), - direction = item.direction, - ) - val latestEventSink by rememberUpdatedState(eventSink) - LaunchedEffect(item.timestamp) { - latestEventSink(MediaGalleryEvents.LoadMore(item.direction)) - } - } + is MediaItem.LoadingIndicator -> LoadingMoreIndicator( + modifier = Modifier.animateItem(), + item = item, + eventSink = eventSink, + ) } } } @@ -370,16 +365,11 @@ private fun MediaGalleryImageGrid( eventSink(MediaGalleryEvents.OpenInfo(item)) }, ) - is MediaItem.LoadingIndicator -> { - LoadingMoreIndicator( - modifier = Modifier.animateItem(), - direction = item.direction, - ) - val latestEventSink by rememberUpdatedState(eventSink) - LaunchedEffect(item.timestamp) { - latestEventSink(MediaGalleryEvents.LoadMore(item.direction)) - } - } + is MediaItem.LoadingIndicator -> LoadingMoreIndicator( + modifier = Modifier.animateItem(), + item = item, + eventSink = eventSink, + ) } } } @@ -387,14 +377,15 @@ private fun MediaGalleryImageGrid( @Composable private fun LoadingMoreIndicator( - direction: Timeline.PaginationDirection, + item: MediaItem.LoadingIndicator, + eventSink: (MediaGalleryEvents) -> Unit, modifier: Modifier = Modifier ) { Box( modifier = modifier.fillMaxWidth(), contentAlignment = Alignment.Center, ) { - when (direction) { + when (item.direction) { Timeline.PaginationDirection.FORWARDS -> { LinearProgressIndicator( modifier = Modifier @@ -410,6 +401,10 @@ private fun LoadingMoreIndicator( ) } } + val latestEventSink by rememberUpdatedState(eventSink) + LaunchedEffect(item.timestamp) { + latestEventSink(MediaGalleryEvents.LoadMore(item.direction)) + } } }