Cleanup mangadex, hopefully mitigate freezing

This commit is contained in:
Jobobby04
2021-07-18 13:06:12 -04:00
parent dee3abd0c3
commit 2bdead3e5f
6 changed files with 15 additions and 13 deletions
@@ -382,7 +382,7 @@ class LibraryUpdateService(
)
try {
val (newChapters, _) = updateManga(manga)
val (newChapters, _) = updateManga(manga, loggedServices)
if (newChapters.isNotEmpty()) {
if (manga.shouldDownloadNewChapters(db, preferences)) {
@@ -456,7 +456,7 @@ class LibraryUpdateService(
* @param manga the manga to update.
* @return a pair of the inserted and removed chapters.
*/
suspend fun updateManga(manga: Manga): Pair<List<Chapter>, List<Chapter>> {
suspend fun updateManga(manga: Manga, loggedServices: List<TrackService>): Pair<List<Chapter>, List<Chapter>> {
val source = sourceManager.getOrStub(manga.source).getMainSource()
// Update manga details metadata in the background
@@ -480,16 +480,15 @@ class LibraryUpdateService(
}
// SY -->
if (source.isMdBasedSource() && trackManager.mdList.isLogged) {
if (source.isMdBasedSource() && trackManager.mdList in loggedServices) {
val handler = CoroutineExceptionHandler { _, exception ->
Timber.e(exception)
}
ioScope.launch(handler) {
val tracks = db.getTracks(manga).executeOnIO()
val tracks = db.getTracks(manga).executeAsBlocking()
if (tracks.isEmpty() || tracks.none { it.sync_id == TrackManager.MDLIST }) {
var track = trackManager.mdList.createInitialTracker(manga)
track = trackManager.mdList.refresh(track)
db.insertTrack(track).executeOnIO()
val track = trackManager.mdList.createInitialTracker(manga)
db.insertTrack(trackManager.mdList.refresh(track)).executeAsBlocking()
}
}
}
@@ -96,7 +96,7 @@ class MdList(private val context: Context, id: Int) : TrackService(id) {
override suspend fun refresh(track: Track): Track {
return withIOContext {
val mdex = mdex ?: throw MangaDexNotFoundException()
val (remoteTrack/*, mangaMetadata*/) = mdex.getTrackingAndMangaInfo(track)
val remoteTrack = mdex.fetchTrackingInfo(track.tracking_url)
track.copyPersonalFrom(remoteTrack)
/*if (track.total_chapters == 0 && mangaMetadata.status == SManga.COMPLETED) {
track.total_chapters = mangaMetadata.maxChapterNumber ?: 0
@@ -83,7 +83,7 @@ class MangaDex(delegate: HttpSource, val context: Context) :
private val loginHelper = MangaDexLoginHelper(mangadexAuthServiceLazy, preferences, mdList)
override val baseHttpClient: OkHttpClient = super.client.newBuilder()
override val baseHttpClient: OkHttpClient = delegate.client.newBuilder()
.authenticator(
TokenAuthenticator(loginHelper)
)