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

View File

@ -382,7 +382,7 @@ class LibraryUpdateService(
) )
try { try {
val (newChapters, _) = updateManga(manga) val (newChapters, _) = updateManga(manga, loggedServices)
if (newChapters.isNotEmpty()) { if (newChapters.isNotEmpty()) {
if (manga.shouldDownloadNewChapters(db, preferences)) { if (manga.shouldDownloadNewChapters(db, preferences)) {
@ -456,7 +456,7 @@ class LibraryUpdateService(
* @param manga the manga to update. * @param manga the manga to update.
* @return a pair of the inserted and removed chapters. * @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() val source = sourceManager.getOrStub(manga.source).getMainSource()
// Update manga details metadata in the background // Update manga details metadata in the background
@ -480,16 +480,15 @@ class LibraryUpdateService(
} }
// SY --> // SY -->
if (source.isMdBasedSource() && trackManager.mdList.isLogged) { if (source.isMdBasedSource() && trackManager.mdList in loggedServices) {
val handler = CoroutineExceptionHandler { _, exception -> val handler = CoroutineExceptionHandler { _, exception ->
Timber.e(exception) Timber.e(exception)
} }
ioScope.launch(handler) { 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 }) { if (tracks.isEmpty() || tracks.none { it.sync_id == TrackManager.MDLIST }) {
var track = trackManager.mdList.createInitialTracker(manga) val track = trackManager.mdList.createInitialTracker(manga)
track = trackManager.mdList.refresh(track) db.insertTrack(trackManager.mdList.refresh(track)).executeAsBlocking()
db.insertTrack(track).executeOnIO()
} }
} }
} }

View File

@ -96,7 +96,7 @@ class MdList(private val context: Context, id: Int) : TrackService(id) {
override suspend fun refresh(track: Track): Track { override suspend fun refresh(track: Track): Track {
return withIOContext { return withIOContext {
val mdex = mdex ?: throw MangaDexNotFoundException() val mdex = mdex ?: throw MangaDexNotFoundException()
val (remoteTrack/*, mangaMetadata*/) = mdex.getTrackingAndMangaInfo(track) val remoteTrack = mdex.fetchTrackingInfo(track.tracking_url)
track.copyPersonalFrom(remoteTrack) track.copyPersonalFrom(remoteTrack)
/*if (track.total_chapters == 0 && mangaMetadata.status == SManga.COMPLETED) { /*if (track.total_chapters == 0 && mangaMetadata.status == SManga.COMPLETED) {
track.total_chapters = mangaMetadata.maxChapterNumber ?: 0 track.total_chapters = mangaMetadata.maxChapterNumber ?: 0

View File

@ -83,7 +83,7 @@ class MangaDex(delegate: HttpSource, val context: Context) :
private val loginHelper = MangaDexLoginHelper(mangadexAuthServiceLazy, preferences, mdList) private val loginHelper = MangaDexLoginHelper(mangadexAuthServiceLazy, preferences, mdList)
override val baseHttpClient: OkHttpClient = super.client.newBuilder() override val baseHttpClient: OkHttpClient = delegate.client.newBuilder()
.authenticator( .authenticator(
TokenAuthenticator(loginHelper) TokenAuthenticator(loginHelper)
) )

View File

@ -252,7 +252,9 @@ class ApiMangaParser(
// Convert from unix time // Convert from unix time
val dateUpload = MdUtil.parseDate(attributes.publishAt) 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)) val scanlator = MdUtil.cleanString(MdUtil.getScanlatorString(scanlatorName))

View File

@ -159,8 +159,9 @@ class FollowsHandler(
val mangaId = MdUtil.getMangaId(url) val mangaId = MdUtil.getMangaId(url)
val followStatus = FollowStatus.fromDex(service.readingStatusForManga(mangaId).status) val followStatus = FollowStatus.fromDex(service.readingStatusForManga(mangaId).status)
Track.create(TrackManager.MDLIST).apply { Track.create(TrackManager.MDLIST).apply {
title = ""
status = followStatus.int status = followStatus.int
tracking_url = "${MdUtil.baseUrl}/title/$mangaId" tracking_url = url
} }
} }
} }

View File

@ -56,7 +56,7 @@ class PageHandler(
} }
@Suppress("UNCHECKED_CAST") @Suppress("UNCHECKED_CAST")
fun updateExtensionVariable(mangadex: Source, atHomeRequestUrl: String) { private fun updateExtensionVariable(mangadex: Source, atHomeRequestUrl: String) {
val mangadexSuperclass = mangadex::class.superclasses.first() val mangadexSuperclass = mangadex::class.superclasses.first()
val helperCallable = mangadexSuperclass.members.find { it.name == "helper" } ?: return val helperCallable = mangadexSuperclass.members.find { it.name == "helper" } ?: return
@ -69,7 +69,7 @@ class PageHandler(
tokenTracker[atHomeRequestUrl] = System.currentTimeMillis() tokenTracker[atHomeRequestUrl] = System.currentTimeMillis()
} }
fun pageListParse( private fun pageListParse(
chapterDto: ChapterDto, chapterDto: ChapterDto,
atHomeRequestUrl: String, atHomeRequestUrl: String,
atHomeDto: AtHomeDto, atHomeDto: AtHomeDto,