Эх сурвалжийг харах

Perform mark as read action in IO coroutine scope to avoid freezing app

arkon 5 жил өмнө
parent
commit
79bc1290ae

+ 16 - 9
app/src/main/java/eu/kanade/tachiyomi/data/notification/NotificationReceiver.kt

@@ -18,6 +18,7 @@ import eu.kanade.tachiyomi.source.SourceManager
 import eu.kanade.tachiyomi.ui.main.MainActivity
 import eu.kanade.tachiyomi.ui.manga.MangaController
 import eu.kanade.tachiyomi.ui.reader.ReaderActivity
+import eu.kanade.tachiyomi.util.lang.launchIO
 import eu.kanade.tachiyomi.util.storage.DiskUtil
 import eu.kanade.tachiyomi.util.storage.getUriCompat
 import eu.kanade.tachiyomi.util.system.notificationManager
@@ -170,16 +171,22 @@ class NotificationReceiver : BroadcastReceiver() {
         val preferences: PreferencesHelper = Injekt.get()
         val sourceManager: SourceManager = Injekt.get()
 
-        chapterUrls.mapNotNull { db.getChapter(it, mangaId).executeAsBlocking() }
-                .forEach {
-                    it.read = true
-                    db.updateChapterProgress(it).executeAsBlocking()
-                    if (preferences.removeAfterMarkedAsRead()) {
-                        val manga = db.getManga(mangaId).executeAsBlocking() ?: return
-                        val source = sourceManager.get(manga.source) ?: return
-                        downloadManager.deleteChapters(listOf(it), manga, source)
+        launchIO {
+            chapterUrls.mapNotNull { db.getChapter(it, mangaId).executeAsBlocking() }
+                    .forEach {
+                        it.read = true
+                        db.updateChapterProgress(it).executeAsBlocking()
+                        if (preferences.removeAfterMarkedAsRead()) {
+                            val manga = db.getManga(mangaId).executeAsBlocking()
+                            if (manga != null) {
+                                val source = sourceManager.get(manga.source)
+                                if (source != null) {
+                                    downloadManager.deleteChapters(listOf(it), manga, source)
+                                }
+                            }
+                        }
                     }
-                }
+        }
     }
 
     companion object {