diff --git a/app/src/main/java/com/hippo/ehviewer/EhDB.kt b/app/src/main/java/com/hippo/ehviewer/EhDB.kt index f67857a29..d1288ce3a 100644 --- a/app/src/main/java/com/hippo/ehviewer/EhDB.kt +++ b/app/src/main/java/com/hippo/ehviewer/EhDB.kt @@ -112,10 +112,9 @@ object EhDB { return raw } - @Synchronized - fun updateDownloadLabel(raw: DownloadLabel?) { + suspend fun updateDownloadLabel(raw: DownloadLabel) { val dao = db.downloadLabelDao() - dao.update(raw!!) + dao.update(raw) } @Synchronized @@ -332,32 +331,23 @@ object EhDB { it.close() context.deleteDatabase(tempDBName) } use { oldDB -> - // Download label runCatching { val downloadLabelList = oldDB.downloadLabelDao().list() DownloadManager.addDownloadLabel(downloadLabelList) } - - // Downloads runCatching { val downloadInfoList = oldDB.downloadsDao().list() DownloadManager.addDownload(downloadInfoList, false) } - - // Download dirname runCatching { oldDB.downloadDirnameDao().list().forEach { putDownloadDirname(it.gid, it.dirname) } } - - // History runCatching { val historyInfoList = oldDB.historyDao().list() putHistoryInfo(historyInfoList) } - - // QuickSearch runCatching { val quickSearchList = oldDB.quickSearchDao().list() val currentQuickSearchList = db.quickSearchDao().list() @@ -366,15 +356,11 @@ object EhDB { } importQuickSearch(importList) } - - // LocalFavorites runCatching { oldDB.localFavoritesDao().list().forEach { putLocalFavorites(it) } } - - // Filter runCatching { val filterList = oldDB.filterDao().list() val currentFilterList = db.filterDao().list() diff --git a/app/src/main/java/com/hippo/ehviewer/dao/DownloadLabelDao.kt b/app/src/main/java/com/hippo/ehviewer/dao/DownloadLabelDao.kt index cc280168b..d9387c5e8 100644 --- a/app/src/main/java/com/hippo/ehviewer/dao/DownloadLabelDao.kt +++ b/app/src/main/java/com/hippo/ehviewer/dao/DownloadLabelDao.kt @@ -18,7 +18,7 @@ interface DownloadLabelDao { fun update(downloadLabels: List) @Update - fun update(downloadLabel: DownloadLabel) + suspend fun update(downloadLabel: DownloadLabel) @Insert fun insert(t: DownloadLabel): Long 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 cb2f821b5..c0414f1e7 100644 --- a/app/src/main/java/com/hippo/ehviewer/download/DownloadManager.kt +++ b/app/src/main/java/com/hippo/ehviewer/download/DownloadManager.kt @@ -284,14 +284,6 @@ object DownloadManager : OnSpiderListener { // No-op } - override fun onChange() { - // No-op - } - - override fun onRenameLabel(from: String, to: String) { - // No-op - } - override fun onRemove(info: DownloadInfo, list: List, position: Int) { trySend(info) } @@ -737,7 +729,7 @@ object DownloadManager : OnSpiderListener { } } - fun renameLabel(from: String, to: String) { + suspend fun renameLabel(from: String, to: String) { // Find in label list var found = false for (raw in labelList) { @@ -762,11 +754,6 @@ object DownloadManager : OnSpiderListener { } // Put list back with new label map[to] = list - - // Notify listener - for (l in mDownloadInfoListeners) { - l.onRenameLabel(from, to) - } } suspend fun deleteLabel(label: String) { @@ -797,11 +784,6 @@ object DownloadManager : OnSpiderListener { // Sort defaultInfoList.sortByDateDescending() - - // Notify listener - for (l in mDownloadInfoListeners) { - l.onChange() - } } val isIdle: Boolean @@ -901,16 +883,6 @@ object DownloadManager : OnSpiderListener { */ fun onReload() - /** - * The list is gone, use default list please - */ - fun onChange() - - /** - * Rename label - */ - fun onRenameLabel(from: String, to: String) - /** * Remove the special info from the special position */ diff --git a/app/src/main/java/com/hippo/ehviewer/ui/scene/DownloadsScene.kt b/app/src/main/java/com/hippo/ehviewer/ui/scene/DownloadsScene.kt index 7b082dfc5..78710da62 100644 --- a/app/src/main/java/com/hippo/ehviewer/ui/scene/DownloadsScene.kt +++ b/app/src/main/java/com/hippo/ehviewer/ui/scene/DownloadsScene.kt @@ -99,7 +99,6 @@ import com.hippo.ehviewer.util.sendTo import com.hippo.unifile.UniFile import eu.kanade.tachiyomi.util.lang.launchIO import eu.kanade.tachiyomi.util.lang.launchNonCancellable -import eu.kanade.tachiyomi.util.lang.launchUI import eu.kanade.tachiyomi.util.lang.withUIContext import eu.kanade.tachiyomi.util.system.pxToDp import kotlinx.coroutines.Dispatchers @@ -642,23 +641,6 @@ class DownloadsScene : updateView() } - override fun onChange() { - lifecycleScope.launchUI { - mLabel = null - updateForLabel() - updateView() - } - } - - override fun onRenameLabel(from: String, to: String) { - if (mLabel != from) { - return - } - mLabel = to - updateForLabel() - updateView() - } - override fun onRemove(info: DownloadInfo, list: List, position: Int) { if (mList !== list) { return @@ -1075,10 +1057,19 @@ class DownloadsScene : } else { mBuilder.setError(null) mDialog.dismiss() - downloadManager.renameLabel(mOriginalLabel!!, text) - if (mLabelAdapter != null) { - initLabels() - mLabelAdapter!!.notifyDataSetChanged() + lifecycleScope.launchIO { + downloadManager.renameLabel(mOriginalLabel!!, text) + if (mLabelAdapter != null) { + withUIContext { + initLabels() + mLabelAdapter!!.notifyDataSetChanged() + if (mLabel == mOriginalLabel) { + mLabel = text + updateForLabel() + updateView() + } + } + } } } } @@ -1160,6 +1151,9 @@ class DownloadsScene : DownloadManager.deleteLabel(label) mLabels.removeAt(position) withUIContext { + mLabel = null + updateForLabel() + updateView() mLabelAdapter!!.notifyItemRemoved(position) } }