From 017ebe2f262b6a71e08d388f62a43fca2b534907 Mon Sep 17 00:00:00 2001 From: Ahmad Ansori Palembani Date: Wed, 29 May 2024 12:55:35 +0700 Subject: [PATCH] fix: Remove any mention of MangaJson outside CustomMangaManager --- .../data/backup/models/BackupManga.kt | 30 +++---------- .../data/library/CustomMangaManager.kt | 43 ++++++++++++++++++- .../eu/kanade/tachiyomi/source/LocalSource.kt | 2 +- .../ui/manga/MangaDetailsPresenter.kt | 6 +-- 4 files changed, 53 insertions(+), 28 deletions(-) diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/backup/models/BackupManga.kt b/app/src/main/java/eu/kanade/tachiyomi/data/backup/models/BackupManga.kt index 52e8c397fd..d156246bc6 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/backup/models/BackupManga.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/backup/models/BackupManga.kt @@ -93,30 +93,14 @@ data class BackupManga( customGenre != null || customStatus != 0 ) { - return CustomMangaManager.ComicList.ComicInfoYokai( + return CustomMangaManager.ComicList.ComicInfoYokai.create( id = 0L, - value = ComicInfo( - title = null, - series = customTitle?.let { ComicInfo.Series(it) }, - number = null, - writer = customAuthor?.let { ComicInfo.Writer(it) }, - penciller = customArtist?.let { ComicInfo.Penciller(it) }, - inker = null, - colorist = null, - letterer = null, - coverArtist = null, - translator = null, - summary = customDescription?.let { ComicInfo.Summary(it) }, - genre = customGenre?.joinToString(", ")?.let { ComicInfo.Genre(it) }, - tags = null, - web = null, - publishingStatus = customStatus.takeUnless { it == 0 }?.let { ComicInfo.PublishingStatusTachiyomi( - ComicInfoPublishingStatus.toComicInfoValue(status.toLong()) - ) }, - categories = null, - source = null, - language = null, - ) + title = customTitle, + author = customAuthor, + artist = customArtist, + description = customDescription, + genre = customGenre?.toTypedArray(), + status = customStatus, ) } return null 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 16920f3d16..d23c747646 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 @@ -4,6 +4,7 @@ import android.content.Context import com.hippo.unifile.UniFile import dev.yokai.core.metadata.COMIC_INFO_EDITS_FILE import dev.yokai.core.metadata.ComicInfo +import dev.yokai.core.metadata.ComicInfoPublishingStatus import dev.yokai.core.metadata.copyFromComicInfo import dev.yokai.core.metadata.toComicInfo import eu.kanade.tachiyomi.data.database.models.Manga @@ -177,7 +178,47 @@ class CustomMangaManager(val context: Context) { data class ComicInfoYokai( @XmlValue(true) val value: ComicInfo, var id: Long? = null, - ) + ) { + companion object { + fun create( + id: Long? = null, + title: String? = null, + author: String? = null, + artist: String? = null, + description: String? = null, + genre: Array? = null, + status: Int? = null, + ): ComicInfoYokai { + return ComicInfoYokai( + id = id, + value = ComicInfo( + title = null, + series = title?.let { ComicInfo.Series(it) }, + number = null, + writer = author?.let { ComicInfo.Writer(it) }, + penciller = artist?.let { ComicInfo.Penciller(it) }, + inker = null, + colorist = null, + letterer = null, + coverArtist = null, + translator = null, + summary = description?.let { ComicInfo.Summary(it) }, + genre = genre?.joinToString(", ")?.let { ComicInfo.Genre(it) }, + tags = null, + web = null, + publishingStatus = status.takeUnless { it == 0 }?.let { + ComicInfo.PublishingStatusTachiyomi( + ComicInfoPublishingStatus.toComicInfoValue(it.toLong()) + ) + }, + categories = null, + source = null, + language = null, + ) + ) + } + } + } } private fun mangaFromComicInfoObject(id: Long, comicInfo: ComicInfo) = MangaImpl().apply { diff --git a/app/src/main/java/eu/kanade/tachiyomi/source/LocalSource.kt b/app/src/main/java/eu/kanade/tachiyomi/source/LocalSource.kt index 5bf761ae27..f22d2c151d 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/source/LocalSource.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/source/LocalSource.kt @@ -246,7 +246,7 @@ class LocalSource(private val context: Context) : CatalogueSource, UnmeteredSour lang?.let { langMap[manga.url] = it } val file = directory.createFile(COMIC_INFO_FILE)!! - file.writeText(xml.encodeToString(ComicInfo.serializer(), manga.toComicInfo(lang))) + file.writeText(xml.encodeToString(ComicInfo.serializer(), manga.toComicInfo(lang = lang))) } @Serializable diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaDetailsPresenter.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaDetailsPresenter.kt index ebcd43b15a..68c66e19fa 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaDetailsPresenter.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaDetailsPresenter.kt @@ -712,7 +712,7 @@ class MangaDetailsPresenter( fun confirmDeletion() { launchIO { coverCache.deleteFromCache(manga) - customMangaManager.saveMangaInfo(CustomMangaManager.MangaJson(manga.id!!)) + customMangaManager.saveMangaInfo(CustomMangaManager.ComicList.ComicInfoYokai.create(manga.id!!)) downloadManager.deleteManga(manga, source) asyncUpdateMangaAndChapters(true) } @@ -797,8 +797,8 @@ class MangaDetailsPresenter( manga.viewer_flags = -1 db.updateViewerFlags(manga).executeAsBlocking() } - val manga = CustomMangaManager.MangaJson( - manga.id!!, + val manga = CustomMangaManager.ComicList.ComicInfoYokai.create( + id = manga.id!!, title?.trimOrNull(), author?.trimOrNull(), artist?.trimOrNull(),