Updated on 2026-08-14

This commit is contained in:
Tangem 2024-09-16 22:35:36 +03:00
parent a94db85dfd
commit 648ceb9946
9 changed files with 94 additions and 60 deletions

View file

@ -4,8 +4,13 @@ import androidx.compose.foundation.lazy.LazyListState
import androidx.compose.runtime.*
@Composable
fun InfiniteListHandler(listState: LazyListState, onLoadMore: () -> Boolean, buffer: Int = 2) {
val loadMore by remember {
fun InfiniteListHandler(
listState: LazyListState,
onLoadMore: () -> Boolean,
buffer: Int = 2,
triggerLoadMoreCheckOnItemsCountChange: Boolean = false,
) {
val loadMore by remember(buffer, listState) {
derivedStateOf {
val layoutInfo = listState.layoutInfo
val totalItemsNumber = layoutInfo.totalItemsCount
@ -15,12 +20,18 @@ fun InfiniteListHandler(listState: LazyListState, onLoadMore: () -> Boolean, buf
}
}
val totalItemsCount by remember { derivedStateOf { listState.layoutInfo.totalItemsCount } }
var emitted by remember(totalItemsCount) { mutableStateOf(false) }
val totalItemsCount by remember(listState) { derivedStateOf { listState.layoutInfo.totalItemsCount } }
var emitted by remember(totalItemsCount, buffer, listState) { mutableStateOf(false) }
LaunchedEffect(loadMore) {
if (loadMore && !emitted) {
emitted = onLoadMore()
}
}
LaunchedEffect(totalItemsCount) {
if (triggerLoadMoreCheckOnItemsCountChange && loadMore && !emitted) {
emitted = onLoadMore()
}
}
}