Optimize GalleryInfo composer path calculation
This commit is contained in:
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) }
|
||||
}
|
||||
Reference in new issue
Block a user