Handle failures when updating metadata in library updater

This commit is contained in:
arkon 2021-01-29 22:14:17 -05:00
parent 6bc6e1a1d1
commit 17109ab760

View file

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