diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/backup/BackupManager.kt b/app/src/main/java/eu/kanade/tachiyomi/data/backup/BackupManager.kt index 0afb499266..eb702d6de4 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/backup/BackupManager.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/backup/BackupManager.kt @@ -24,6 +24,7 @@ import eu.kanade.tachiyomi.data.backup.models.Backup import eu.kanade.tachiyomi.data.backup.models.Backup.CATEGORIES import eu.kanade.tachiyomi.data.backup.models.Backup.CHAPTERS import eu.kanade.tachiyomi.data.backup.models.Backup.CURRENT_VERSION +import eu.kanade.tachiyomi.data.backup.models.Backup.EXTENSIONS import eu.kanade.tachiyomi.data.backup.models.Backup.HISTORY import eu.kanade.tachiyomi.data.backup.models.Backup.MANGA import eu.kanade.tachiyomi.data.backup.models.Backup.TRACK @@ -110,24 +111,38 @@ class BackupManager(val context: Context, version: Int = CURRENT_VERSION) { // Create category array val categoryEntries = JsonArray() + // Create extension ID/name mapping + val extensionEntries = JsonArray() + // Add value's to root root[Backup.VERSION] = CURRENT_VERSION root[Backup.MANGAS] = mangaEntries root[CATEGORIES] = categoryEntries + root[EXTENSIONS] = extensionEntries databaseHelper.inTransaction { // Get manga from database val mangas = getFavoriteManga() + val extensions: MutableSet = mutableSetOf() + // Backup library manga and its dependencies mangas.forEach { manga -> mangaEntries.add(backupMangaObject(manga, flags)) + + // Maintain set of extensions/sources used (excludes local source) + if (manga.source != 0L) { + extensions.add("${manga.source}:${sourceManager.get(manga.source)!!.name}") + } } // Backup categories if ((flags and BACKUP_CATEGORY_MASK) == BACKUP_CATEGORY) { backupCategories(categoryEntries) } + + // Backup extension ID/name mapping + backupExtensionInfo(extensionEntries, extensions) } try { @@ -170,6 +185,12 @@ class BackupManager(val context: Context, version: Int = CURRENT_VERSION) { } } + private fun backupExtensionInfo(root: JsonArray, extensions: Set) { + extensions.sorted().forEach { + root.add(it) + } + } + /** * Backup the categories of library * diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/backup/models/Backup.kt b/app/src/main/java/eu/kanade/tachiyomi/data/backup/models/Backup.kt index d0e46e1b3a..917f27754a 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/backup/models/Backup.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/backup/models/Backup.kt @@ -14,6 +14,7 @@ object Backup { const val TRACK = "track" const val CHAPTERS = "chapters" const val CATEGORIES = "categories" + const val EXTENSIONS = "extensions" const val HISTORY = "history" const val VERSION = "version"