Fix mapping local chapters #577

This commit is contained in:
Koitharu
2023-12-02 15:02:48 +02:00
parent 91179ef901
commit b1fa9d1d22

View File

@@ -21,8 +21,7 @@ data class MangaDetails(
val branches: Set<String?>
get() = chapters.keys
val allChapters: List<MangaChapter>
get() = manga.chapters.orEmpty()
val allChapters: List<MangaChapter> by lazy { mergeChapters() }
val isLocal
get() = manga.isLocal
@@ -40,4 +39,26 @@ data class MangaDetails(
description = description,
isLoaded = isLoaded,
)
private fun mergeChapters(): List<MangaChapter> {
val chapters = manga.chapters
val localChapters = local?.manga?.chapters.orEmpty()
if (chapters.isNullOrEmpty()) {
return localChapters
}
val localMap = if (localChapters.isNotEmpty()) {
localChapters.associateByTo(LinkedHashMap(localChapters.size)) { it.id }
} else {
null
}
val result = ArrayList<MangaChapter>(chapters.size)
for (chapter in chapters) {
val local = localMap?.remove(chapter.id)
result += local ?: chapter
}
if (!localMap.isNullOrEmpty()) {
result.addAll(localMap.values)
}
return result
}
}