Fix Android compatibility

Koitharu 3 years ago
parent 6b95a8c55e
commit 0366ad0e57
No known key found for this signature in database
GPG Key ID: 8E861F8CE6E7CE27

@ -171,7 +171,8 @@ internal class ComickFunParser(context: MangaLoaderContext) : MangaParser(contex
val dc = list.groupBy { jo -> jo.getStringOrNull("vol") to jo.getStringOrNull("chap") } val dc = list.groupBy { jo -> jo.getStringOrNull("vol") to jo.getStringOrNull("chap") }
val branches = list.associateGrouping { jo -> val branches = list.associateGrouping { jo ->
jo.getString("lang") to jo.optJSONArray("group_name") jo.getString("lang") to jo.optJSONArray("group_name")
?.joinToString { it.toString() } ?.asIterable<String>()
?.joinToString()
?.takeUnless { it.isBlank() } ?.takeUnless { it.isBlank() }
} }
val chaptersBuilder = ChaptersListBuilder(list.size) val chaptersBuilder = ChaptersListBuilder(list.size)
@ -182,7 +183,8 @@ internal class ComickFunParser(context: MangaLoaderContext) : MangaParser(contex
for (jo in value) { for (jo in value) {
val lang = jo.getString("lang") val lang = jo.getString("lang")
val locale = Locale.forLanguageTag(lang) val locale = Locale.forLanguageTag(lang)
val team = jo.optJSONArray("group_name")?.joinToString { it.toString() }?.takeUnless { it.isBlank() } val team =
jo.optJSONArray("group_name")?.asIterable<String>()?.joinToString()?.takeUnless { it.isBlank() }
var branch = locale.getDisplayName(locale).toTitleCase(locale) var branch = locale.getDisplayName(locale).toTitleCase(locale)
if (branches[lang].orEmpty().size > 1 && team != null) { if (branches[lang].orEmpty().size > 1 && team != null) {
branch += " ($team)" branch += " ($team)"

@ -0,0 +1,18 @@
package org.koitharu.kotatsu.parsers.util.json
import org.json.JSONArray
class JSONTypedIterator<T>(
private val array: JSONArray,
private val cls: Class<T>,
) : Iterator<T> {
private val total = array.length()
private var index = 0
override fun hasNext() = index < total
override fun next(): T {
return cls.cast(array.get(index++))
}
}

@ -141,3 +141,7 @@ fun JSONArray?.isNullOrEmpty(): Boolean {
fun JSONArray.toJSONList(): List<JSONObject> { fun JSONArray.toJSONList(): List<JSONObject> {
return List(length()) { i -> getJSONObject(i) } return List(length()) { i -> getJSONObject(i) }
} }
inline fun <reified T> JSONArray.asIterable(): Iterable<T> = Iterable {
JSONTypedIterator(this, T::class.java)
}

Loading…
Cancel
Save