From d910910223a366237a33bf7e1be7208b572a9827 Mon Sep 17 00:00:00 2001 From: Dr1ks Date: Fri, 21 Feb 2025 07:21:39 -0800 Subject: [PATCH] LibGroup: fix chapters (#7692) * LibGroup: fix chapters * LibGroup: review fix * LibGroup: review fix 2 * LibGroup: lint --- lib-multisrc/libgroup/build.gradle.kts | 2 +- .../tachiyomi/multisrc/libgroup/LibGroup.kt | 40 +++++++++---------- 2 files changed, 19 insertions(+), 23 deletions(-) diff --git a/lib-multisrc/libgroup/build.gradle.kts b/lib-multisrc/libgroup/build.gradle.kts index 0e573c8ab..8577219f5 100644 --- a/lib-multisrc/libgroup/build.gradle.kts +++ b/lib-multisrc/libgroup/build.gradle.kts @@ -2,4 +2,4 @@ plugins { id("lib-multisrc") } -baseVersionCode = 34 +baseVersionCode = 35 diff --git a/lib-multisrc/libgroup/src/eu/kanade/tachiyomi/multisrc/libgroup/LibGroup.kt b/lib-multisrc/libgroup/src/eu/kanade/tachiyomi/multisrc/libgroup/LibGroup.kt index ed5072c08..937d7cb08 100644 --- a/lib-multisrc/libgroup/src/eu/kanade/tachiyomi/multisrc/libgroup/LibGroup.kt +++ b/lib-multisrc/libgroup/src/eu/kanade/tachiyomi/multisrc/libgroup/LibGroup.kt @@ -313,37 +313,33 @@ abstract class LibGroup( override fun chapterListParse(response: Response): List { val slugUrl = response.request.url.toString().substringAfter("manga/").substringBefore("/chapters") val chaptersData = response.parseAs>>() - if (chaptersData.data.isEmpty()) { - throw Exception("Нет глав") - } - + .also { if (it.data.isEmpty()) return emptyList() } val sortingList = preferences.getString(SORTING_PREF, "ms_mixing") - val defaultBranchId = if (chaptersData.data.getBranchCount() > 1) { // excess request if branchesCount is only alone = slow update library witch rateLimitHost(apiDomain.toHttpUrl(), 1) + val defaultBranchId = if (sortingList == "ms_mixing" && chaptersData.data.getBranchCount() > 1) { runCatching { getDefaultBranch(slugUrl.substringBefore("-")).first().id }.getOrNull() } else { null } - val chapters = mutableListOf() - for (it in chaptersData.data.withIndex()) { - if (it.value.branchesCount > 1) { - for (currentBranch in it.value.branches.withIndex()) { - if (currentBranch.value.branchId == defaultBranchId && sortingList == "ms_mixing") { // ms_mixing with default branch from api - chapters.add(it.value.toSChapter(slugUrl, defaultBranchId, isScanUser())) - } else if (defaultBranchId == null && sortingList == "ms_mixing") { // ms_mixing with first branch in chapter - if (chapters.any { chpIt -> chpIt.chapter_number == it.value.number.toFloat() }) { - chapters.add(it.value.toSChapter(slugUrl, currentBranch.value.branchId, isScanUser())) - } - } else if (sortingList == "ms_combining") { // ms_combining - chapters.add(it.value.toSChapter(slugUrl, currentBranch.value.branchId, isScanUser())) + return chaptersData.data.flatMap { chapter -> + when { + chapter.branchesCount > 1 && sortingList == "ms_mixing" -> { + val branch = chapter.branches + .firstOrNull { it.branchId == defaultBranchId }?.branchId + ?: chapter.branches.first().branchId + + listOf( + chapter.toSChapter(slugUrl, branch, isScanUser()), + ) + } + chapter.branchesCount > 1 && sortingList == "ms_combining" -> { + chapter.branches.map { branch -> + chapter.toSChapter(slugUrl, branch.branchId, isScanUser()) } } - } else { - chapters.add(it.value.toSChapter(slugUrl, isScanUser = isScanUser())) + else -> listOf(chapter.toSChapter(slugUrl, isScanUser = isScanUser())) } - } - - return chapters.reversed() + }.reversed() } override fun fetchChapterList(manga: SManga): Observable> {