From cde4f9e4055831c819da62bfd33853acf830e5af Mon Sep 17 00:00:00 2001 From: FooIbar <118464521+FooIbar@users.noreply.github.com> Date: Thu, 23 Nov 2023 19:44:11 +0800 Subject: [PATCH] Fix refresh state --- .../ehviewer/ui/scene/FavoritesFragment.kt | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/app/src/main/kotlin/com/hippo/ehviewer/ui/scene/FavoritesFragment.kt b/app/src/main/kotlin/com/hippo/ehviewer/ui/scene/FavoritesFragment.kt index 71f3852d8..5e6388020 100644 --- a/app/src/main/kotlin/com/hippo/ehviewer/ui/scene/FavoritesFragment.kt +++ b/app/src/main/kotlin/com/hippo/ehviewer/ui/scene/FavoritesFragment.kt @@ -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 + } } } }