diff --git a/app/src/main/java/org/koitharu/kotatsu/core/parser/site/DesuMeRepository.kt b/app/src/main/java/org/koitharu/kotatsu/core/parser/site/DesuMeRepository.kt index 5a3f81af1..21c21ab8c 100644 --- a/app/src/main/java/org/koitharu/kotatsu/core/parser/site/DesuMeRepository.kt +++ b/app/src/main/java/org/koitharu/kotatsu/core/parser/site/DesuMeRepository.kt @@ -27,6 +27,9 @@ class DesuMeRepository(loaderContext: MangaLoaderContext) : RemoteMangaRepositor sortOrder: SortOrder?, tag: MangaTag? ): List { + if (query != null && offset != 0) { + return emptyList() + } val domain = getDomain() val url = buildString { append("https://") @@ -76,6 +79,8 @@ class DesuMeRepository(loaderContext: MangaLoaderContext) : RemoteMangaRepositor val json = loaderContext.httpGet(url).parseJson().getJSONObject("response") ?: throw ParseException("Invalid response") val baseChapterUrl = manga.url + "/chapter/" + val chaptersList = json.getJSONObject("chapters").getJSONArray("list") + val totalChapters = chaptersList.length() return manga.copy( tags = json.getJSONArray("genres").mapToSet { MangaTag( @@ -85,16 +90,16 @@ class DesuMeRepository(loaderContext: MangaLoaderContext) : RemoteMangaRepositor ) }, description = json.getString("description"), - chapters = json.getJSONObject("chapters").getJSONArray("list").mapIndexed { i, it -> + chapters = chaptersList.mapIndexed { i, it -> val chid = it.getLong("id") MangaChapter( id = generateUid(chid), source = manga.source, url = "$baseChapterUrl$chid", - name = it.optString("title", "${manga.title} #${it.getDouble("ch")}"), - number = i + 1 + name = it.getStringOrNull("title") ?: "${manga.title} #${it.getDouble("ch")}", + number = totalChapters - i ) - } + }.reversed() ) } diff --git a/app/src/main/java/org/koitharu/kotatsu/local/data/MangaIndex.kt b/app/src/main/java/org/koitharu/kotatsu/local/data/MangaIndex.kt index ee7a06df4..3edc96ee4 100644 --- a/app/src/main/java/org/koitharu/kotatsu/local/data/MangaIndex.kt +++ b/app/src/main/java/org/koitharu/kotatsu/local/data/MangaIndex.kt @@ -61,7 +61,7 @@ class MangaIndex(source: String?) { ) }.getOrNull() - fun getCoverEntry(): String? = json.optString("cover_entry") + fun getCoverEntry(): String? = json.getStringOrNull("cover_entry") fun addChapter(chapter: MangaChapter) { val chapters = json.getJSONObject("chapters") diff --git a/app/src/main/java/org/koitharu/kotatsu/utils/ext/JsonExt.kt b/app/src/main/java/org/koitharu/kotatsu/utils/ext/JsonExt.kt index c1c91f9f3..c52492c33 100644 --- a/app/src/main/java/org/koitharu/kotatsu/utils/ext/JsonExt.kt +++ b/app/src/main/java/org/koitharu/kotatsu/utils/ext/JsonExt.kt @@ -30,7 +30,9 @@ fun JSONArray.mapIndexed(block: (Int, JSONObject) -> T): List { return result } -fun JSONObject.getStringOrNull(name: String): String? = opt(name)?.toString() +fun JSONObject.getStringOrNull(name: String): String? = opt(name)?.takeUnless { + it === JSONObject.NULL +}?.toString() operator fun JSONArray.iterator(): Iterator = JSONIterator(this)