From 5cf122c30c6c2aaebc77ac5fce324fda71c76b0e Mon Sep 17 00:00:00 2001 From: tarsin Date: Wed, 12 Jul 2023 10:41:56 +0800 Subject: [PATCH] Suspend more db --- app/src/main/java/com/hippo/ehviewer/EhDB.kt | 10 ++++------ .../main/java/com/hippo/ehviewer/dao/DownloadsDao.kt | 2 +- .../com/hippo/ehviewer/download/DownloadManager.kt | 2 +- 3 files changed, 6 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/com/hippo/ehviewer/EhDB.kt b/app/src/main/java/com/hippo/ehviewer/EhDB.kt index dc9a85396..04e54d3cf 100644 --- a/app/src/main/java/com/hippo/ehviewer/EhDB.kt +++ b/app/src/main/java/com/hippo/ehviewer/EhDB.kt @@ -39,13 +39,11 @@ object EhDB { private val db = roomDb("eh.db") { allowMainThreadQueries() } // Fix state - @get:Synchronized - val allDownloadInfo: List - get() = db.downloadsDao().list().onEach { - if (it.state == DownloadInfo.STATE_WAIT || it.state == DownloadInfo.STATE_DOWNLOAD) { - it.state = DownloadInfo.STATE_NONE - } + suspend fun getAllDownloadInfo() = db.downloadsDao().list().onEach { + if (it.state == DownloadInfo.STATE_WAIT || it.state == DownloadInfo.STATE_DOWNLOAD) { + it.state = DownloadInfo.STATE_NONE } + } @Synchronized fun updateDownloadInfo(downloadInfos: List) { diff --git a/app/src/main/java/com/hippo/ehviewer/dao/DownloadsDao.kt b/app/src/main/java/com/hippo/ehviewer/dao/DownloadsDao.kt index 654aec35d..72db1876e 100644 --- a/app/src/main/java/com/hippo/ehviewer/dao/DownloadsDao.kt +++ b/app/src/main/java/com/hippo/ehviewer/dao/DownloadsDao.kt @@ -9,7 +9,7 @@ import androidx.room.Update @Dao interface DownloadsDao { @Query("SELECT * FROM DOWNLOADS ORDER BY TIME DESC") - fun list(): List + suspend fun list(): List @Query("SELECT * FROM DOWNLOADS ORDER BY TIME DESC LIMIT :limit OFFSET :offset") fun list(offset: Int, limit: Int): List 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 b11a505f1..4817c9ea4 100644 --- a/app/src/main/java/com/hippo/ehviewer/download/DownloadManager.kt +++ b/app/src/main/java/com/hippo/ehviewer/download/DownloadManager.kt @@ -54,7 +54,7 @@ import java.util.LinkedList object DownloadManager : OnSpiderListener { // All download info list - val allInfoList: LinkedList = LinkedList(EhDB.allDownloadInfo) + val allInfoList: LinkedList = runAssertingNotMainThread { LinkedList(EhDB.getAllDownloadInfo()) } // All download info map private val mAllInfoMap = allInfoList.associateBy { it.gid } as MutableMap