mirror of
https://github.com/msfjarvis/compose-lobsters
synced 2025-08-15 00:37:03 +05:30
refactor(android): inline refresh load state
This commit is contained in:
parent
e68af9be16
commit
c8d1491196
1 changed files with 11 additions and 4 deletions
|
@ -18,6 +18,9 @@ import androidx.compose.foundation.lazy.rememberLazyListState
|
||||||
import androidx.compose.material3.ExperimentalMaterial3Api
|
import androidx.compose.material3.ExperimentalMaterial3Api
|
||||||
import androidx.compose.material3.HorizontalDivider
|
import androidx.compose.material3.HorizontalDivider
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
|
import androidx.compose.runtime.derivedStateOf
|
||||||
|
import androidx.compose.runtime.getValue
|
||||||
|
import androidx.compose.runtime.remember
|
||||||
import androidx.compose.ui.Alignment
|
import androidx.compose.ui.Alignment
|
||||||
import androidx.compose.ui.Modifier
|
import androidx.compose.ui.Modifier
|
||||||
import androidx.compose.ui.unit.dp
|
import androidx.compose.ui.unit.dp
|
||||||
|
@ -49,14 +52,18 @@ fun NetworkPosts(
|
||||||
modifier: Modifier = Modifier,
|
modifier: Modifier = Modifier,
|
||||||
) {
|
) {
|
||||||
ReportDrawnWhen { lazyPagingItems.itemCount > 0 }
|
ReportDrawnWhen { lazyPagingItems.itemCount > 0 }
|
||||||
val refreshLoadState = lazyPagingItems.loadState.refresh
|
val isRefreshing by
|
||||||
val isRefreshing = refreshLoadState == LoadState.Loading && lazyPagingItems.itemCount == 0
|
remember(lazyPagingItems) {
|
||||||
|
derivedStateOf {
|
||||||
|
lazyPagingItems.loadState.refresh == LoadState.Loading && lazyPagingItems.itemCount == 0
|
||||||
|
}
|
||||||
|
}
|
||||||
val pullRefreshState = rememberPullRefreshState(isRefreshing, lazyPagingItems::refresh)
|
val pullRefreshState = rememberPullRefreshState(isRefreshing, lazyPagingItems::refresh)
|
||||||
Box(modifier = modifier.fillMaxSize().pullRefresh(pullRefreshState)) {
|
Box(modifier = modifier.fillMaxSize().pullRefresh(pullRefreshState)) {
|
||||||
if (lazyPagingItems.itemCount == 0 && refreshLoadState is LoadState.Error) {
|
if (lazyPagingItems.itemCount == 0 && lazyPagingItems.loadState.refresh is LoadState.Error) {
|
||||||
NetworkError(
|
NetworkError(
|
||||||
label = "Failed to load posts",
|
label = "Failed to load posts",
|
||||||
error = refreshLoadState.error,
|
error = (lazyPagingItems.loadState.refresh as LoadState.Error).error,
|
||||||
modifier = Modifier.align(Alignment.Center),
|
modifier = Modifier.align(Alignment.Center),
|
||||||
)
|
)
|
||||||
} else {
|
} else {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue