Gallery: rework load more management

This commit is contained in:
Benoit Marty 2024-12-18 12:00:37 +01:00
parent 67e70cc615
commit ac075f0558

View file

@ -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))
}
}
}