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 {
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()
}
}
}

View File

@ -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

View File

@ -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)
)

View File

@ -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))

View File

@ -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
}
}
}

View File

@ -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,