Handle failures in the library updater
This commit is contained in:
parent
4cbb2ae082
commit
284a456184
@ -6,6 +6,7 @@ import android.content.Intent
|
|||||||
import android.os.IBinder
|
import android.os.IBinder
|
||||||
import android.os.PowerManager
|
import android.os.PowerManager
|
||||||
import androidx.core.content.ContextCompat
|
import androidx.core.content.ContextCompat
|
||||||
|
import com.elvishew.xlog.XLog
|
||||||
import eu.kanade.tachiyomi.R
|
import eu.kanade.tachiyomi.R
|
||||||
import eu.kanade.tachiyomi.data.cache.CoverCache
|
import eu.kanade.tachiyomi.data.cache.CoverCache
|
||||||
import eu.kanade.tachiyomi.data.database.DatabaseHelper
|
import eu.kanade.tachiyomi.data.database.DatabaseHelper
|
||||||
@ -32,7 +33,6 @@ import eu.kanade.tachiyomi.ui.library.LibraryGroup
|
|||||||
import eu.kanade.tachiyomi.ui.manga.track.TrackItem
|
import eu.kanade.tachiyomi.ui.manga.track.TrackItem
|
||||||
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
|
||||||
@ -52,7 +52,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
|
||||||
@ -408,6 +407,10 @@ class LibraryUpdateService(
|
|||||||
downloadManager.downloadChapters(manga, /* SY --> */ chapters.filter { it.manga_id !in chapterFilter } /* SY <-- */, false)
|
downloadManager.downloadChapters(manga, /* SY --> */ chapters.filter { it.manga_id !in chapterFilter } /* SY <-- */, false)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
val handler = CoroutineExceptionHandler { _, throwable ->
|
||||||
|
XLog.e(throwable)
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Updates the chapters for the given manga and adds them to the database.
|
* Updates the chapters for the given manga and adds them to the database.
|
||||||
*
|
*
|
||||||
@ -419,27 +422,22 @@ class LibraryUpdateService(
|
|||||||
|
|
||||||
// Update manga details metadata in the background
|
// Update manga details metadata in the background
|
||||||
if (preferences.autoUpdateMetadata()) {
|
if (preferences.autoUpdateMetadata()) {
|
||||||
GlobalScope.launchIO {
|
ioScope.launch(handler) {
|
||||||
try {
|
val updatedManga = source.getMangaDetails(manga.toMangaInfo())
|
||||||
val updatedManga = source.getMangaDetails(manga.toMangaInfo())
|
val sManga = updatedManga.toSManga()
|
||||||
val sManga = updatedManga.toSManga()
|
// Avoid "losing" existing cover
|
||||||
// Avoid "losing" existing cover
|
if (!sManga.thumbnail_url.isNullOrEmpty()) {
|
||||||
if (!sManga.thumbnail_url.isNullOrEmpty()) {
|
manga.prepUpdateCover(coverCache, sManga, false)
|
||||||
manga.prepUpdateCover(coverCache, sManga, false)
|
} else {
|
||||||
} else {
|
sManga.thumbnail_url = manga.thumbnail_url
|
||||||
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()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ioScope.launchIO {
|
ioScope.launch(handler) {
|
||||||
if (source is MangaDex && trackManager.mdList.isLogged) {
|
if (source is MangaDex && trackManager.mdList.isLogged) {
|
||||||
val tracks = db.getTracks(manga).executeOnIO()
|
val tracks = db.getTracks(manga).executeOnIO()
|
||||||
if (tracks.isEmpty() || tracks.none { it.sync_id == TrackManager.MDLIST }) {
|
if (tracks.isEmpty() || tracks.none { it.sync_id == TrackManager.MDLIST }) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user