diff --git a/app/src/main/java/eu/kanade/tachiyomi/AppModule.kt b/app/src/main/java/eu/kanade/tachiyomi/AppModule.kt index 2ffbaf148..2f3ec7a71 100755 --- a/app/src/main/java/eu/kanade/tachiyomi/AppModule.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/AppModule.kt @@ -42,13 +42,13 @@ class AppModule(val app: Application) : InjektModule { addSingletonFactory { DownloadManager(app) } - addSingletonFactory { CustomMangaManager(app) } - addSingletonFactory { TrackManager(app) } addSingletonFactory { Gson() } // SY --> + addSingletonFactory { CustomMangaManager(app) } + addSingletonFactory { EHentaiUpdateHelper(app) } // SY <-- diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/library/CustomMangaManager.kt b/app/src/main/java/eu/kanade/tachiyomi/data/library/CustomMangaManager.kt index 1b3384c0f..b033b190a 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/library/CustomMangaManager.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/library/CustomMangaManager.kt @@ -7,13 +7,6 @@ import kotlinx.serialization.Serializable import kotlinx.serialization.decodeFromString import kotlinx.serialization.encodeToString import kotlinx.serialization.json.Json -import kotlinx.serialization.json.JsonArray -import kotlinx.serialization.json.JsonObject -import kotlinx.serialization.json.buildJsonObject -import kotlinx.serialization.json.contentOrNull -import kotlinx.serialization.json.encodeToJsonElement -import kotlinx.serialization.json.jsonPrimitive -import kotlinx.serialization.json.longOrNull import java.io.File import java.util.Scanner @@ -33,25 +26,23 @@ class CustomMangaManager(val context: Context) { if (!editJson.exists() || !editJson.isFile) return val json = try { - Json.decodeFromString( + Json.decodeFromString( Scanner(editJson).useDelimiter("\\Z").next() ) } catch (e: Exception) { null } ?: return - val mangasJson = json["mangas"] as? JsonArray ?: return - customMangaMap = mangasJson.mapNotNull { element -> - val mangaObject = element as? JsonObject ?: return@mapNotNull null - val id = mangaObject["id"]?.jsonPrimitive?.longOrNull ?: return@mapNotNull null + val mangasJson = json.mangas ?: return + customMangaMap = mangasJson.mapNotNull { mangaJson -> + val id = mangaJson.id ?: return@mapNotNull null val manga = MangaImpl().apply { this.id = id - title = mangaObject["title"]?.jsonPrimitive?.contentOrNull ?: "" - author = mangaObject["author"]?.jsonPrimitive?.contentOrNull - artist = mangaObject["artist"]?.jsonPrimitive?.contentOrNull - description = mangaObject["description"]?.jsonPrimitive?.contentOrNull - genre = (mangaObject["genre"] as? JsonArray)?.mapNotNull { it.jsonPrimitive.contentOrNull } - ?.joinToString(", ") + title = mangaJson.title ?: "" + author = mangaJson.author + artist = mangaJson.artist + description = mangaJson.description + genre = mangaJson.genre?.joinToString(", ") } id to manga }.toMap().toMutableMap() @@ -59,9 +50,9 @@ class CustomMangaManager(val context: Context) { fun saveMangaInfo(manga: MangaJson) { if (manga.title == null && manga.author == null && manga.artist == null && manga.description == null && manga.genre == null) { - customMangaMap.remove(manga.id) + customMangaMap.remove(manga.id!!) } else { - customMangaMap[manga.id] = MangaImpl().apply { + customMangaMap[manga.id!!] = MangaImpl().apply { id = manga.id title = manga.title ?: "" author = manga.author @@ -76,12 +67,8 @@ class CustomMangaManager(val context: Context) { private fun saveCustomInfo() { val jsonElements = customMangaMap.values.map { it.toJson() } if (jsonElements.isNotEmpty()) { - val mangaEntries = Json.encodeToJsonElement(jsonElements) - val root = buildJsonObject { - put("mangas", mangaEntries) - } editJson.delete() - editJson.writeText(Json.encodeToString(root)) + editJson.writeText(Json.encodeToString(MangaList(jsonElements))) } } @@ -92,18 +79,23 @@ class CustomMangaManager(val context: Context) { author, artist, description, - genre?.split(", ")?.toTypedArray() + genre?.split(", ") ) } + @Serializable + data class MangaList( + val mangas: List? = null + ) + @Serializable data class MangaJson( - val id: Long, + val id: Long? = null, val title: String? = null, val author: String? = null, val artist: String? = null, val description: String? = null, - val genre: Array? = null + val genre: List? = null ) { override fun equals(other: Any?): Boolean { diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryPresenter.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryPresenter.kt index 08fbb9692..ed809b548 100755 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryPresenter.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryPresenter.kt @@ -529,7 +529,7 @@ class LibraryPresenter( (if (manga.author != manga.originalAuthor) manga.author else null), (if (manga.artist != manga.originalArtist) manga.artist else null), (if (manga.description != manga.originalDescription) manga.description else null), - (if (manga.genre != manga.originalGenre) manga.getGenres()?.toTypedArray() else null) + (if (manga.genre != manga.originalGenre) manga.getGenres() else null) ) } mangaJson?.let { diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaPresenter.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaPresenter.kt index 4094593e3..06fe4a5d8 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaPresenter.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaPresenter.kt @@ -295,7 +295,7 @@ class MangaPresenter( db.updateMangaInfo(manga).executeAsBlocking() } else { val genre = if (!tags.isNullOrEmpty() && tags.joinToString() != manga.genre) { - tags.toTypedArray() + tags } else { null }