From f0ac27b1591b664c7bd5c0716fcaaa77185e4c4c Mon Sep 17 00:00:00 2001 From: tarsin Date: Thu, 4 May 2023 12:16:24 +0800 Subject: [PATCH] Fix HistoryScene Tip bounce --- .../hippo/ehviewer/ui/scene/HistoryScene.kt | 8 ++++++-- .../ehviewer/ui/widget/DeferedComposable.kt | 18 ++++++++++++++++++ 2 files changed, 24 insertions(+), 2 deletions(-) create mode 100644 app/src/main/java/com/hippo/ehviewer/ui/widget/DeferedComposable.kt diff --git a/app/src/main/java/com/hippo/ehviewer/ui/scene/HistoryScene.kt b/app/src/main/java/com/hippo/ehviewer/ui/scene/HistoryScene.kt index 4ad4a26d0..cf52eb4e9 100644 --- a/app/src/main/java/com/hippo/ehviewer/ui/scene/HistoryScene.kt +++ b/app/src/main/java/com/hippo/ehviewer/ui/scene/HistoryScene.kt @@ -73,11 +73,13 @@ import com.hippo.ehviewer.ui.CommonOperations import com.hippo.ehviewer.ui.addToFavorites import com.hippo.ehviewer.ui.dialog.SelectItemWithIconAdapter import com.hippo.ehviewer.ui.removeFromFavorites +import com.hippo.ehviewer.ui.widget.Deferred import com.hippo.ehviewer.ui.widget.ListInfoCard import com.hippo.ehviewer.ui.widget.setMD3Content import eu.kanade.tachiyomi.ui.reader.ReaderActivity import eu.kanade.tachiyomi.util.lang.launchIO import eu.kanade.tachiyomi.util.system.pxToDp +import kotlinx.coroutines.delay import moe.tarsin.coroutines.runSuspendCatching class HistoryScene : BaseScene() { @@ -147,8 +149,10 @@ class HistoryScene : BaseScene() { } } } - if (historyData.itemCount == 0) { - NoHistory(modifier = Modifier.padding(paddingValues)) + Deferred({ delay(200) }) { + if (historyData.itemCount == 0) { + NoHistory(modifier = Modifier.padding(paddingValues)) + } } } } diff --git a/app/src/main/java/com/hippo/ehviewer/ui/widget/DeferedComposable.kt b/app/src/main/java/com/hippo/ehviewer/ui/widget/DeferedComposable.kt new file mode 100644 index 000000000..1390c547f --- /dev/null +++ b/app/src/main/java/com/hippo/ehviewer/ui/widget/DeferedComposable.kt @@ -0,0 +1,18 @@ +package com.hippo.ehviewer.ui.widget + +import androidx.compose.runtime.Composable +import androidx.compose.runtime.LaunchedEffect +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.saveable.rememberSaveable +import androidx.compose.runtime.setValue + +@Composable +fun Deferred(block: suspend () -> Unit, content: @Composable () -> Unit) { + var completed by rememberSaveable { mutableStateOf(false) } + LaunchedEffect(key1 = Unit) { + block() + completed = true + } + if (completed) content() +}