Fix refresh state

This commit is contained in:
FooIbar committed 2023-11-23 20:48:21 +08:00
1 parent 16fddcb377
commit cde4f9e405
1 file changed
+16 -1
@@ -389,6 +389,8 @@ fun FavouritesScreen(navigator: NavController) {
}
}
}
var refreshing by remember { mutableStateOf(false) }
when (val state = data.loadState.refresh) {
is LoadState.Loading -> if (!refreshState.isRefreshing) {
Surface {
@@ -399,6 +401,8 @@ fun FavouritesScreen(navigator: NavController) {
CircularProgressIndicator()
}
}
} else {
refreshing = true
}
is LoadState.Error -> {
Surface {
@@ -425,9 +429,20 @@ fun FavouritesScreen(navigator: NavController) {
}
}
}
SideEffect {
if (refreshing) {
refreshState.endRefresh()
refreshing = false
}
}
}
is LoadState.NotLoading -> SideEffect {
refreshState.endRefresh()
// Don't use `refreshState.isRefreshing` here because recomposition may happen
// before loading state changes
if (refreshing) {
refreshState.endRefresh()
refreshing = false
}
}
}
}