From cea5761b29fb0e191d184dcd46818d819dfff54a Mon Sep 17 00:00:00 2001 From: Jays2Kings Date: Sun, 21 Aug 2022 03:47:55 -0400 Subject: [PATCH] Change migration of custom covers to also include custom manga info --- .../data/library/CustomMangaManager.kt | 31 +++++++++---------- .../tachiyomi/ui/migration/MigrationFlags.kt | 21 +++++++------ .../manga/process/MigrationProcessAdapter.kt | 18 ++++++++--- .../kanade/tachiyomi/util/MangaExtensions.kt | 1 + app/src/main/res/values/strings.xml | 1 - 5 files changed, 41 insertions(+), 31 deletions(-) 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 435c44e8dc..b5c6af7e3b 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,7 +7,6 @@ import kotlinx.serialization.Serializable import kotlinx.serialization.decodeFromString import kotlinx.serialization.encodeToString import kotlinx.serialization.json.Json -import uy.kohesive.injekt.injectLazy import java.io.File class CustomMangaManager(val context: Context) { @@ -20,6 +19,20 @@ class CustomMangaManager(val context: Context) { fetchCustomData() } + companion object { + fun Manga.toJson(): MangaJson { + return MangaJson( + id!!, + title, + author, + artist, + description, + genre?.split(", ")?.toTypedArray(), + status.takeUnless { it == -1 }, + ) + } + } + fun getManga(manga: Manga): Manga? = customMangaMap[manga.id] private fun fetchCustomData() { @@ -45,7 +58,7 @@ class CustomMangaManager(val context: Context) { manga.artist == null && manga.description == null && manga.genre == null && - manga.status ?: -1 == -1 + (manga.status ?: -1) == -1 ) { customMangaMap.remove(mangaId) } else { @@ -54,8 +67,6 @@ class CustomMangaManager(val context: Context) { saveCustomInfo() } - private val json2: Json by injectLazy() - private fun saveCustomInfo() { val jsonElements = customMangaMap.values.map { it.toJson() } if (jsonElements.isNotEmpty()) { @@ -64,18 +75,6 @@ class CustomMangaManager(val context: Context) { } } - private fun Manga.toJson(): MangaJson { - return MangaJson( - id!!, - title, - author, - artist, - description, - genre?.split(", ")?.toTypedArray(), - status.takeUnless { it == -1 }, - ) - } - @Serializable data class MangaList( val mangas: List? = null, diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/migration/MigrationFlags.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/migration/MigrationFlags.kt index 075519d88a..33f10028d0 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/migration/MigrationFlags.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/migration/MigrationFlags.kt @@ -5,8 +5,8 @@ import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.data.cache.CoverCache import eu.kanade.tachiyomi.data.database.DatabaseHelper import eu.kanade.tachiyomi.data.database.models.Manga +import eu.kanade.tachiyomi.data.library.CustomMangaManager import eu.kanade.tachiyomi.util.system.toInt -import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.api.get import uy.kohesive.injekt.injectLazy @@ -15,13 +15,14 @@ object MigrationFlags { private const val CHAPTERS = 0b0001 private const val CATEGORIES = 0b0010 private const val TRACK = 0b0100 - private const val CUSTOM_COVER = 0b1000 + private const val CUSTOM_MANGA_INFO = 0b1000 private val coverCache: CoverCache by injectLazy() - private val db: DatabaseHelper = Injekt.get() + private val db: DatabaseHelper by injectLazy() + private val customMangaManager: CustomMangaManager by injectLazy() - val titles get() = arrayOf(R.string.chapters, R.string.categories, R.string.tracking, R.string.custom_cover) - val flags get() = arrayOf(CHAPTERS, CATEGORIES, TRACK, CUSTOM_COVER) + val titles get() = arrayOf(R.string.chapters, R.string.categories, R.string.tracking, R.string.custom_manga_info) + val flags get() = arrayOf(CHAPTERS, CATEGORIES, TRACK, CUSTOM_MANGA_INFO) fun hasChapters(value: Int): Boolean { return value and CHAPTERS != 0 @@ -35,8 +36,8 @@ object MigrationFlags { return value and TRACK != 0 } - fun hasCustomCover(value: Int): Boolean { - return value and CUSTOM_COVER != 0 + fun hasCustomMangaInfo(value: Int): Boolean { + return value and CUSTOM_MANGA_INFO != 0 } fun getEnabledFlags(value: Int): List { @@ -63,8 +64,8 @@ object MigrationFlags { flags.add(TRACK) } - if (coverCache.getCustomCoverFile(manga).exists()) { - flags.add(CUSTOM_COVER) + if (coverCache.getCustomCoverFile(manga).exists() || customMangaManager.getManga(manga) != null) { + flags.add(CUSTOM_MANGA_INFO) } } return flags.toTypedArray() @@ -75,7 +76,7 @@ object MigrationFlags { CHAPTERS -> R.string.chapters CATEGORIES -> R.string.categories TRACK -> R.string.tracking - CUSTOM_COVER -> R.string.custom_cover + CUSTOM_MANGA_INFO -> R.string.custom_manga_info else -> 0 } } diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/migration/manga/process/MigrationProcessAdapter.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/migration/manga/process/MigrationProcessAdapter.kt index c140db33fb..be2022e0c7 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/migration/manga/process/MigrationProcessAdapter.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/migration/manga/process/MigrationProcessAdapter.kt @@ -7,6 +7,8 @@ import eu.kanade.tachiyomi.data.database.DatabaseHelper import eu.kanade.tachiyomi.data.database.models.History import eu.kanade.tachiyomi.data.database.models.Manga import eu.kanade.tachiyomi.data.database.models.MangaCategory +import eu.kanade.tachiyomi.data.library.CustomMangaManager +import eu.kanade.tachiyomi.data.library.CustomMangaManager.Companion.toJson import eu.kanade.tachiyomi.data.preference.PreferencesHelper import eu.kanade.tachiyomi.data.track.EnhancedTrackService import eu.kanade.tachiyomi.data.track.TrackManager @@ -31,6 +33,7 @@ class MigrationProcessAdapter( val preferences: PreferencesHelper by injectLazy() val sourceManager: SourceManager by injectLazy() val coverCache: CoverCache by injectLazy() + val customMangaManager: CustomMangaManager by injectLazy() var showOutline = preferences.outlineOnCovers().get() val menuItemListener: MigrationProcessInterface = controller @@ -132,7 +135,7 @@ class MigrationProcessAdapter( ) { if (controller.config == null) return val flags = preferences.migrateFlags().get() - migrateMangaInternal(flags, db, enhancedServices, coverCache, prevSource, source, prevManga, manga, replace) + migrateMangaInternal(flags, db, enhancedServices, coverCache, customMangaManager, prevSource, source, prevManga, manga, replace) } companion object { @@ -142,6 +145,7 @@ class MigrationProcessAdapter( db: DatabaseHelper, enhancedServices: List, coverCache: CoverCache, + customMangaManager: CustomMangaManager, prevSource: Source?, source: Source, prevManga: Manga, @@ -210,9 +214,15 @@ class MigrationProcessAdapter( if (replace) manga.date_added = prevManga.date_added else manga.date_added = Date().time - // Update custom cover - if (MigrationFlags.hasCustomCover(flags) && coverCache.getCustomCoverFile(prevManga).exists()) { - coverCache.setCustomCoverToCache(manga, coverCache.getCustomCoverFile(prevManga).inputStream()) + // Update custom cover & info + if (MigrationFlags.hasCustomMangaInfo(flags)) { + if (coverCache.getCustomCoverFile(prevManga).exists()) { + coverCache.setCustomCoverToCache(manga, coverCache.getCustomCoverFile(prevManga).inputStream()) + } + customMangaManager.getManga(prevManga)?.let { customManga -> + customManga.id = manga.id!! + customMangaManager.saveMangaInfo(customManga.toJson()) + } } db.updateMangaFavorite(manga).executeAsBlocking() diff --git a/app/src/main/java/eu/kanade/tachiyomi/util/MangaExtensions.kt b/app/src/main/java/eu/kanade/tachiyomi/util/MangaExtensions.kt index 214098fa23..c3b8d44302 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/util/MangaExtensions.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/util/MangaExtensions.kt @@ -269,6 +269,7 @@ private fun showAddDuplicateDialog( db, enhancedServices, Injekt.get(), + Injekt.get(), source, sourceManager.getOrStub(newManga.source), libraryManga, diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 846700cdae..45f7a27197 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -564,7 +564,6 @@ Error saving cover Error sharing cover Custom manga info - sCustom cover Set as default Filter scanlator groups