LibGroup: fix chapters (#7692)

* LibGroup: fix chapters

* LibGroup: review fix

* LibGroup: review fix 2

* LibGroup: lint
This commit is contained in:
Dr1ks 2025-02-21 07:21:39 -08:00 committed by Draff
parent 662da8f9fe
commit d910910223
No known key found for this signature in database
GPG Key ID: E8A89F3211677653
2 changed files with 19 additions and 23 deletions

View File

@ -2,4 +2,4 @@ plugins {
id("lib-multisrc")
}
baseVersionCode = 34
baseVersionCode = 35

View File

@ -313,37 +313,33 @@ abstract class LibGroup(
override fun chapterListParse(response: Response): List<SChapter> {
val slugUrl = response.request.url.toString().substringAfter("manga/").substringBefore("/chapters")
val chaptersData = response.parseAs<Data<List<Chapter>>>()
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<SChapter>()
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<List<SChapter>> {