From e7e036f7c61ad6de0182a923c98206e53853edd2 Mon Sep 17 00:00:00 2001 From: tarsin Date: Mon, 3 Jul 2023 17:25:28 +0800 Subject: [PATCH] Convert mAllInfoMap to LinkedHashMap and do query in composer thread --- .../hippo/ehviewer/download/DownloadManager.kt | 10 ++++------ .../com/hippo/ehviewer/ui/main/GalleryInfo.kt | 15 ++++++--------- 2 files changed, 10 insertions(+), 15 deletions(-) diff --git a/app/src/main/java/com/hippo/ehviewer/download/DownloadManager.kt b/app/src/main/java/com/hippo/ehviewer/download/DownloadManager.kt index 1acc933f3..f1869f8f4 100644 --- a/app/src/main/java/com/hippo/ehviewer/download/DownloadManager.kt +++ b/app/src/main/java/com/hippo/ehviewer/download/DownloadManager.kt @@ -18,8 +18,6 @@ package com.hippo.ehviewer.download import android.net.Uri import android.util.Log import android.util.SparseLongArray -import androidx.collection.LongSparseArray -import androidx.collection.keyIterator import com.google.android.material.math.MathUtils import com.hippo.ehviewer.AppConfig import com.hippo.ehviewer.EhDB @@ -50,7 +48,7 @@ object DownloadManager : OnSpiderListener { private val mAllInfoList: LinkedList // All download info map - private val mAllInfoMap: LongSparseArray + private val mAllInfoMap: MutableMap // label and info list map, without default label info list private val mMap: MutableMap> @@ -91,7 +89,7 @@ object DownloadManager : OnSpiderListener { mAllInfoList = LinkedList(allInfoList) // Create all info map - val allInfoMap = LongSparseArray(allInfoList.size + 10) + val allInfoMap = HashMap(allInfoList.size + 10) mAllInfoMap = allInfoMap for (info in allInfoList) { @@ -147,7 +145,7 @@ object DownloadManager : OnSpiderListener { } fun containDownloadInfo(gid: Long): Boolean { - return mAllInfoMap.indexOfKey(gid) >= 0 + return mAllInfoMap.containsKey(gid) } val labelList: List @@ -581,7 +579,7 @@ object DownloadManager : OnSpiderListener { } suspend fun resetAllReadingProgress() = coroutineScope { - mAllInfoMap.keyIterator().forEach { gid -> + mAllInfoMap.keys.forEach { gid -> launch { runCatching { resetReadingProgress(gid) diff --git a/app/src/main/java/com/hippo/ehviewer/ui/main/GalleryInfo.kt b/app/src/main/java/com/hippo/ehviewer/ui/main/GalleryInfo.kt index e9e203a4b..2115539b4 100644 --- a/app/src/main/java/com/hippo/ehviewer/ui/main/GalleryInfo.kt +++ b/app/src/main/java/com/hippo/ehviewer/ui/main/GalleryInfo.kt @@ -34,7 +34,6 @@ 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 @@ -110,14 +109,12 @@ fun GalleryInfoListItem( bottom.linkTo(if (showFav) favRef.top else postedRef.top) }, ) { - Deferred({ DownloadManager.containDownloadInfo(info.gid) }) { - if (it) { - Icon( - Icons.Default.Download, - contentDescription = null, - modifier = Modifier.size(16.dp), - ) - } + if (DownloadManager.containDownloadInfo(info.gid)) { + Icon( + Icons.Default.Download, + contentDescription = null, + modifier = Modifier.size(16.dp), + ) } Text(text = info.simpleLanguage.orEmpty()) if (info.pages != 0 && showPages) {