Optimize GalleryInfo composer path calculation

This commit is contained in:
tarsin committed 2023-06-29 19:02:24 +08:00
1 parent d15685e1ca
commit f3eb2c8c17
2 files changed
+15 -12

No files matched your search

@@ -34,6 +34,7 @@ import com.hippo.ehviewer.client.EhUtils
import com.hippo.ehviewer.client.data.GalleryInfo
import com.hippo.ehviewer.download.DownloadManager
import com.hippo.ehviewer.ui.tools.CrystalCard
import com.hippo.ehviewer.ui.tools.Deferred
import com.hippo.ehviewer.ui.tools.ElevatedCard
import com.hippo.ehviewer.ui.tools.GalleryListCardRating
@@ -109,12 +110,14 @@ fun GalleryInfoListItem(
bottom.linkTo(if (showFav) favRef.top else postedRef.top)
},
) {
if (DownloadManager.containDownloadInfo(info.gid)) {
Icon(
Icons.Default.Download,
contentDescription = null,
modifier = Modifier.size(16.dp),
)
Deferred({ DownloadManager.containDownloadInfo(info.gid) }) {
if (it) {
Icon(
Icons.Default.Download,
contentDescription = null,
modifier = Modifier.size(16.dp),
)
}
}
Text(text = info.simpleLanguage.orEmpty())
if (info.pages != 0 && showPages) {
@@ -4,15 +4,15 @@ 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.remember
import androidx.compose.runtime.setValue
import eu.kanade.tachiyomi.util.lang.withIOContext
@Composable
fun Deferred(block: suspend () -> Unit, content: @Composable () -> Unit) {
var completed by rememberSaveable { mutableStateOf(false) }
fun <T> Deferred(block: suspend () -> T, content: @Composable (T) -> Unit) {
var completed by remember { mutableStateOf<T?>(null) }
LaunchedEffect(key1 = Unit) {
block()
completed = true
completed = withIOContext { block() }
}
if (completed) content()
completed?.let { content(it) }
}