From 2bdead3e5f4cca8e82a4cd999b907bcb58266800 Mon Sep 17 00:00:00 2001 From: Jobobby04 Date: Sun, 18 Jul 2021 13:06:12 -0400 Subject: [PATCH] Cleanup mangadex, hopefully mitigate freezing --- .../tachiyomi/data/library/LibraryUpdateService.kt | 13 ++++++------- .../eu/kanade/tachiyomi/data/track/mdlist/MdList.kt | 2 +- .../kanade/tachiyomi/source/online/all/MangaDex.kt | 2 +- app/src/main/java/exh/md/handlers/ApiMangaParser.kt | 4 +++- app/src/main/java/exh/md/handlers/FollowsHandler.kt | 3 ++- app/src/main/java/exh/md/handlers/PageHandler.kt | 4 ++-- 6 files changed, 15 insertions(+), 13 deletions(-) diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/library/LibraryUpdateService.kt b/app/src/main/java/eu/kanade/tachiyomi/data/library/LibraryUpdateService.kt index e9d9e1c2a..b687ff201 100755 --- a/app/src/main/java/eu/kanade/tachiyomi/data/library/LibraryUpdateService.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/library/LibraryUpdateService.kt @@ -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> { + suspend fun updateManga(manga: Manga, loggedServices: List): Pair, List> { 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() } } } diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/track/mdlist/MdList.kt b/app/src/main/java/eu/kanade/tachiyomi/data/track/mdlist/MdList.kt index 9cb4fe74e..d046e7cbb 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/track/mdlist/MdList.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/track/mdlist/MdList.kt @@ -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 diff --git a/app/src/main/java/eu/kanade/tachiyomi/source/online/all/MangaDex.kt b/app/src/main/java/eu/kanade/tachiyomi/source/online/all/MangaDex.kt index eb6b1d727..ae1c35320 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/source/online/all/MangaDex.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/source/online/all/MangaDex.kt @@ -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) ) diff --git a/app/src/main/java/exh/md/handlers/ApiMangaParser.kt b/app/src/main/java/exh/md/handlers/ApiMangaParser.kt index 5c4ae1d40..aa1d83f53 100644 --- a/app/src/main/java/exh/md/handlers/ApiMangaParser.kt +++ b/app/src/main/java/exh/md/handlers/ApiMangaParser.kt @@ -252,7 +252,9 @@ class ApiMangaParser( // Convert from unix time val dateUpload = MdUtil.parseDate(attributes.publishAt) - val scanlatorName = networkChapter.relationships.filter { it.type == "scanlation_group" }.mapNotNull { groups[it.id] }.toSet() + val scanlatorName = networkChapter.relationships.filter { + it.type == MdConstants.Types.scanlator + }.mapNotNull { groups[it.id] }.toSet() val scanlator = MdUtil.cleanString(MdUtil.getScanlatorString(scanlatorName)) diff --git a/app/src/main/java/exh/md/handlers/FollowsHandler.kt b/app/src/main/java/exh/md/handlers/FollowsHandler.kt index 3a6d3f047..0d0cd6190 100644 --- a/app/src/main/java/exh/md/handlers/FollowsHandler.kt +++ b/app/src/main/java/exh/md/handlers/FollowsHandler.kt @@ -159,8 +159,9 @@ class FollowsHandler( val mangaId = MdUtil.getMangaId(url) val followStatus = FollowStatus.fromDex(service.readingStatusForManga(mangaId).status) Track.create(TrackManager.MDLIST).apply { + title = "" status = followStatus.int - tracking_url = "${MdUtil.baseUrl}/title/$mangaId" + tracking_url = url } } } diff --git a/app/src/main/java/exh/md/handlers/PageHandler.kt b/app/src/main/java/exh/md/handlers/PageHandler.kt index 3cf75cc30..d17e58955 100644 --- a/app/src/main/java/exh/md/handlers/PageHandler.kt +++ b/app/src/main/java/exh/md/handlers/PageHandler.kt @@ -56,7 +56,7 @@ class PageHandler( } @Suppress("UNCHECKED_CAST") - fun updateExtensionVariable(mangadex: Source, atHomeRequestUrl: String) { + private fun updateExtensionVariable(mangadex: Source, atHomeRequestUrl: String) { val mangadexSuperclass = mangadex::class.superclasses.first() val helperCallable = mangadexSuperclass.members.find { it.name == "helper" } ?: return @@ -69,7 +69,7 @@ class PageHandler( tokenTracker[atHomeRequestUrl] = System.currentTimeMillis() } - fun pageListParse( + private fun pageListParse( chapterDto: ChapterDto, atHomeRequestUrl: String, atHomeDto: AtHomeDto,