From e38255e895b34137a5a228fa383288e9714d67b0 Mon Sep 17 00:00:00 2001 From: Jobobby04 Date: Sun, 12 Sep 2021 13:07:18 -0400 Subject: [PATCH] Migrate to the new mangadex list response --- app/src/main/java/exh/md/dto/ChapterDto.kt | 8 ++++---- app/src/main/java/exh/md/dto/ListCallDto.kt | 2 +- app/src/main/java/exh/md/dto/MangaDto.kt | 4 ++-- app/src/main/java/exh/md/handlers/ApiMangaParser.kt | 11 ++++++----- app/src/main/java/exh/md/handlers/FollowsHandler.kt | 10 +++++----- app/src/main/java/exh/md/handlers/MangaHandler.kt | 6 +++--- app/src/main/java/exh/md/handlers/SimilarHandler.kt | 2 +- app/src/main/java/exh/md/utils/MdExtensions.kt | 2 +- app/src/main/java/exh/md/utils/MdUtil.kt | 12 ++++++------ 9 files changed, 29 insertions(+), 28 deletions(-) diff --git a/app/src/main/java/exh/md/dto/ChapterDto.kt b/app/src/main/java/exh/md/dto/ChapterDto.kt index a2597758f..c4bba754d 100644 --- a/app/src/main/java/exh/md/dto/ChapterDto.kt +++ b/app/src/main/java/exh/md/dto/ChapterDto.kt @@ -7,8 +7,8 @@ data class ChapterListDto( override val limit: Int, override val offset: Int, override val total: Int, - override val results: List, -) : ListCallDto + override val data: List, +) : ListCallDto @Serializable data class ChapterDto( @@ -45,8 +45,8 @@ data class GroupListDto( override val limit: Int, override val offset: Int, override val total: Int, - override val results: List, -) : ListCallDto + override val data: List, +) : ListCallDto @Serializable data class GroupDto( diff --git a/app/src/main/java/exh/md/dto/ListCallDto.kt b/app/src/main/java/exh/md/dto/ListCallDto.kt index 073a6d814..5f8d26463 100644 --- a/app/src/main/java/exh/md/dto/ListCallDto.kt +++ b/app/src/main/java/exh/md/dto/ListCallDto.kt @@ -4,5 +4,5 @@ interface ListCallDto { val limit: Int val offset: Int val total: Int - val results: List + val data: List } diff --git a/app/src/main/java/exh/md/dto/MangaDto.kt b/app/src/main/java/exh/md/dto/MangaDto.kt index 51bb6d0dd..58c746e69 100644 --- a/app/src/main/java/exh/md/dto/MangaDto.kt +++ b/app/src/main/java/exh/md/dto/MangaDto.kt @@ -8,8 +8,8 @@ data class MangaListDto( override val limit: Int, override val offset: Int, override val total: Int, - override val results: List, -) : ListCallDto + override val data: List +) : ListCallDto @Serializable data class MangaDto( diff --git a/app/src/main/java/exh/md/handlers/ApiMangaParser.kt b/app/src/main/java/exh/md/handlers/ApiMangaParser.kt index c408bdd5b..df25053f3 100644 --- a/app/src/main/java/exh/md/handlers/ApiMangaParser.kt +++ b/app/src/main/java/exh/md/handlers/ApiMangaParser.kt @@ -3,6 +3,7 @@ package exh.md.handlers import eu.kanade.tachiyomi.data.database.DatabaseHelper import eu.kanade.tachiyomi.source.model.SManga import exh.log.xLogE +import exh.md.dto.ChapterDataDto import exh.md.dto.ChapterDto import exh.md.dto.MangaDto import exh.md.utils.MdConstants @@ -189,7 +190,7 @@ class ApiMangaParser( else -> SManga.UNKNOWN } - fun chapterListParse(chapterListResponse: List, groupMap: Map): List { + fun chapterListParse(chapterListResponse: List, groupMap: Map): List { val now = System.currentTimeMillis() return chapterListResponse.asSequence() @@ -207,11 +208,11 @@ class ApiMangaParser( fun StringBuilder.appends(string: String): StringBuilder = append("$string ") private fun mapChapter( - networkChapter: ChapterDto, + networkChapter: ChapterDataDto, groups: Map, ): ChapterInfo { - val attributes = networkChapter.data.attributes - val key = MdUtil.chapterSuffix + networkChapter.data.id + val attributes = networkChapter.attributes + val key = MdUtil.chapterSuffix + networkChapter.id val chapterName = StringBuilder() // Build chapter name @@ -253,7 +254,7 @@ class ApiMangaParser( // Convert from unix time val dateUpload = MdUtil.parseDate(attributes.publishAt) - val scanlatorName = networkChapter.data.relationships + val scanlatorName = networkChapter.relationships .filter { it.type == MdConstants.Types.scanlator } diff --git a/app/src/main/java/exh/md/handlers/FollowsHandler.kt b/app/src/main/java/exh/md/handlers/FollowsHandler.kt index 0d0cd6190..14a51f3c8 100644 --- a/app/src/main/java/exh/md/handlers/FollowsHandler.kt +++ b/app/src/main/java/exh/md/handlers/FollowsHandler.kt @@ -6,7 +6,7 @@ import eu.kanade.tachiyomi.source.model.MetadataMangasPage import eu.kanade.tachiyomi.source.model.SManga import eu.kanade.tachiyomi.source.model.toSManga import eu.kanade.tachiyomi.util.lang.withIOContext -import exh.md.dto.MangaDto +import exh.md.dto.MangaDataDto import exh.md.dto.ReadingStatusDto import exh.md.service.MangaDexAuthService import exh.md.utils.FollowStatus @@ -28,13 +28,13 @@ class FollowsHandler( return withIOContext { val follows = service.userFollowList(MdUtil.mangaLimit * page) - if (follows.results.isEmpty()) { + if (follows.data.isEmpty()) { return@withIOContext MetadataMangasPage(emptyList(), false, emptyList()) } val hasMoreResults = follows.limit + follows.offset under follows.total val statusListResponse = service.readingStatusAllManga() - val results = followsParseMangaPage(follows.results, statusListResponse.statuses) + val results = followsParseMangaPage(follows.data, statusListResponse.statuses) MetadataMangasPage(results.map { it.first }, hasMoreResults, results.map { it.second }) } @@ -45,7 +45,7 @@ class FollowsHandler( * used when multiple follows */ private fun followsParseMangaPage( - response: List, + response: List, statuses: Map ): List> { val comparator = compareBy> { it.second.followStatus } @@ -56,7 +56,7 @@ class FollowsHandler( it, lang ).toSManga() to MangaDexSearchMetadata().apply { - followStatus = FollowStatus.fromDex(statuses[it.data.id]).int + followStatus = FollowStatus.fromDex(statuses[it.id]).int } }.sortedWith(comparator) } diff --git a/app/src/main/java/exh/md/handlers/MangaHandler.kt b/app/src/main/java/exh/md/handlers/MangaHandler.kt index 86ef6db11..b5324f978 100644 --- a/app/src/main/java/exh/md/handlers/MangaHandler.kt +++ b/app/src/main/java/exh/md/handlers/MangaHandler.kt @@ -8,7 +8,7 @@ import eu.kanade.tachiyomi.source.model.toSChapter import eu.kanade.tachiyomi.source.model.toSManga import eu.kanade.tachiyomi.util.lang.runAsObservable import eu.kanade.tachiyomi.util.lang.withIOContext -import exh.md.dto.ChapterDto +import exh.md.dto.ChapterDataDto import exh.md.service.MangaDexService import exh.md.utils.MdConstants import exh.md.utils.MdUtil @@ -52,8 +52,8 @@ class MangaHandler( } } - private fun getGroupMap(results: List): Map { - return results.map { chapter -> chapter.data.relationships } + private fun getGroupMap(results: List): Map { + return results.map { chapter -> chapter.relationships } .flatten() .filter { it.type == MdConstants.Types.scanlator } .map { it.id to it.attributes!!.name!! } diff --git a/app/src/main/java/exh/md/handlers/SimilarHandler.kt b/app/src/main/java/exh/md/handlers/SimilarHandler.kt index c4f79527f..d8379bc7b 100644 --- a/app/src/main/java/exh/md/handlers/SimilarHandler.kt +++ b/app/src/main/java/exh/md/handlers/SimilarHandler.kt @@ -26,7 +26,7 @@ class SimilarHandler( it.id } - val mangaList = service.viewMangas(ids).results.map { + val mangaList = service.viewMangas(ids).data.map { MdUtil.createMangaEntry(it, lang).toSManga() } diff --git a/app/src/main/java/exh/md/utils/MdExtensions.kt b/app/src/main/java/exh/md/utils/MdExtensions.kt index c4fa85ff2..dba93f2ec 100644 --- a/app/src/main/java/exh/md/utils/MdExtensions.kt +++ b/app/src/main/java/exh/md/utils/MdExtensions.kt @@ -13,7 +13,7 @@ suspend fun mdListCall(request: suspend (offset: Int) -> ListCallDto): Li do { val list = request(offset) - results += list.results + results += list.data offset += list.limit } while (offset under list.total) diff --git a/app/src/main/java/exh/md/utils/MdUtil.kt b/app/src/main/java/exh/md/utils/MdUtil.kt index b115ef2d5..cb2d338b2 100644 --- a/app/src/main/java/exh/md/utils/MdUtil.kt +++ b/app/src/main/java/exh/md/utils/MdUtil.kt @@ -8,7 +8,7 @@ import eu.kanade.tachiyomi.source.model.SManga import eu.kanade.tachiyomi.source.online.all.MangaDex import exh.log.xLogD import exh.md.dto.LoginBodyTokenDto -import exh.md.dto.MangaDto +import exh.md.dto.MangaDataDto import exh.md.network.NoSessionException import exh.source.getMainSource import exh.util.floor @@ -262,16 +262,16 @@ class MdUtil { fun parseDate(dateAsString: String): Long = dateFormatter.parse(dateAsString)?.time ?: 0 - fun createMangaEntry(json: MangaDto, lang: String): MangaInfo { + fun createMangaEntry(json: MangaDataDto, lang: String): MangaInfo { return MangaInfo( - key = buildMangaUrl(json.data.id), - title = cleanString(getTitle(json.data.attributes.title.asMdMap(), lang, json.data.attributes.originalLanguage)), - cover = json.data.relationships + key = buildMangaUrl(json.id), + title = cleanString(getTitle(json.attributes.title.asMdMap(), lang, json.attributes.originalLanguage)), + cover = json.relationships .firstOrNull { relationshipDto -> relationshipDto.type == MdConstants.Types.coverArt } ?.attributes ?.fileName ?.let { coverFileName -> - cdnCoverUrl(json.data.id, coverFileName) + cdnCoverUrl(json.id, coverFileName) }.orEmpty() ) }