From b139d5fca50de1832d5877e0b1459cf76bd028bc Mon Sep 17 00:00:00 2001 From: Koitharu Date: Wed, 20 Oct 2021 18:49:59 +0300 Subject: [PATCH] Fix saved manga index parsing --- .../org/koitharu/kotatsu/local/data/MangaIndex.kt | 13 ++++++++++--- .../java/org/koitharu/kotatsu/utils/ext/JsonExt.kt | 4 ++++ app/src/main/res/values-ru/strings.xml | 2 +- 3 files changed, 15 insertions(+), 4 deletions(-) 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 e13d2eafb..f678b83b7 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 @@ -7,6 +7,8 @@ import org.koitharu.kotatsu.core.model.Manga import org.koitharu.kotatsu.core.model.MangaChapter import org.koitharu.kotatsu.core.model.MangaSource import org.koitharu.kotatsu.core.model.MangaTag +import org.koitharu.kotatsu.utils.ext.getBooleanOrDefault +import org.koitharu.kotatsu.utils.ext.getLongOrDefault import org.koitharu.kotatsu.utils.ext.getStringOrNull import org.koitharu.kotatsu.utils.ext.mapToSet @@ -20,9 +22,11 @@ class MangaIndex(source: String?) { json.put("title_alt", manga.altTitle) json.put("url", manga.url) json.put("public_url", manga.publicUrl) + json.put("author", manga.author) json.put("cover", manga.coverUrl) json.put("description", manga.description) json.put("rating", manga.rating) + json.put("nsfw", manga.isNsfw) json.put("source", manga.source.name) json.put("cover_large", manga.largeCoverUrl) json.put("tags", JSONArray().also { a -> @@ -48,8 +52,11 @@ class MangaIndex(source: String?) { altTitle = json.getStringOrNull("title_alt"), url = json.getString("url"), publicUrl = json.getStringOrNull("public_url").orEmpty(), + author = json.getStringOrNull("author"), + largeCoverUrl = json.getStringOrNull("cover_large"), source = source, rating = json.getDouble("rating").toFloat(), + isNsfw = json.getBooleanOrDefault("nsfw", false), coverUrl = json.getString("cover"), description = json.getStringOrNull("description"), tags = json.getJSONArray("tags").mapToSet { x -> @@ -59,7 +66,7 @@ class MangaIndex(source: String?) { source = source ) }, - chapters = getChapters(json.getJSONObject("chapters"), source) + chapters = getChapters(json.getJSONObject("chapters"), source), ) }.getOrNull() @@ -100,10 +107,10 @@ class MangaIndex(source: String?) { name = v.getString("name"), url = v.getString("url"), number = v.getInt("number"), - uploadDate = v.getLong("uploadDate"), + uploadDate = v.getLongOrDefault("uploadDate", 0L), scanlator = v.getStringOrNull("scanlator"), branch = v.getStringOrNull("branch"), - source = source + source = source, ) ) } 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 66f96a6e2..6101e428e 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 @@ -38,6 +38,10 @@ fun JSONObject.getBooleanOrDefault(name: String, defaultValue: Boolean): Boolean it === JSONObject.NULL } as? Boolean ?: defaultValue +fun JSONObject.getLongOrDefault(name: String, defaultValue: Long): Long = opt(name)?.takeUnless { + it === JSONObject.NULL +} as? Long ?: defaultValue + operator fun JSONArray.iterator(): Iterator = JSONIterator(this) private class JSONIterator(private val array: JSONArray) : Iterator { diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index 31d12b06e..7748d96ac 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -223,7 +223,7 @@ В очереди На данный момент нет активных загрузок Глава отсутствует - Эта глава отсутствует на вашем устройстве. Скачайте или прочитайте её онлайн. + Эта глава отсутствует на вашем устройстве. Загрузите её или читайте онлайн. Помочь с переводом приложения Перевод Автор