Selaa lähdekoodia

Handle failures when updating metadata in library updater

arkon 4 vuotta sitten
vanhempi
commit
17109ab760

+ 14 - 18
app/src/main/java/eu/kanade/tachiyomi/data/library/LibraryUpdateService.kt

@@ -27,7 +27,6 @@ import eu.kanade.tachiyomi.source.model.toSChapter
 import eu.kanade.tachiyomi.source.model.toSManga
 import eu.kanade.tachiyomi.util.chapter.NoChaptersException
 import eu.kanade.tachiyomi.util.chapter.syncChaptersWithSource
-import eu.kanade.tachiyomi.util.lang.launchIO
 import eu.kanade.tachiyomi.util.prepUpdateCover
 import eu.kanade.tachiyomi.util.shouldDownloadNewChapters
 import eu.kanade.tachiyomi.util.storage.getUriCompat
@@ -38,7 +37,6 @@ import kotlinx.coroutines.CancellationException
 import kotlinx.coroutines.CoroutineExceptionHandler
 import kotlinx.coroutines.CoroutineScope
 import kotlinx.coroutines.Dispatchers
-import kotlinx.coroutines.GlobalScope
 import kotlinx.coroutines.Job
 import kotlinx.coroutines.SupervisorJob
 import kotlinx.coroutines.async
@@ -333,23 +331,21 @@ class LibraryUpdateService(
 
         // Update manga details metadata in the background
         if (preferences.autoUpdateMetadata()) {
-            GlobalScope.launchIO {
-                try {
-                    val updatedManga = source.getMangaDetails(manga.toMangaInfo())
-                    val sManga = updatedManga.toSManga()
-                    // Avoid "losing" existing cover
-                    if (!sManga.thumbnail_url.isNullOrEmpty()) {
-                        manga.prepUpdateCover(coverCache, sManga, false)
-                    } else {
-                        sManga.thumbnail_url = manga.thumbnail_url
-                    }
-
-                    manga.copyFrom(sManga)
-                    db.insertManga(manga).executeAsBlocking()
-                } catch (e: Throwable) {
-                    // Ignore errors and continue
-                    Timber.e(e)
+            val handler = CoroutineExceptionHandler { _, exception ->
+                Timber.e(exception)
+            }
+            ioScope.launch(handler) {
+                val updatedManga = source.getMangaDetails(manga.toMangaInfo())
+                val sManga = updatedManga.toSManga()
+                // Avoid "losing" existing cover
+                if (!sManga.thumbnail_url.isNullOrEmpty()) {
+                    manga.prepUpdateCover(coverCache, sManga, false)
+                } else {
+                    sManga.thumbnail_url = manga.thumbnail_url
                 }
+
+                manga.copyFrom(sManga)
+                db.insertManga(manga).executeAsBlocking()
             }
         }