Explorar o código

Start storing extension ID/source name mapping in backup files

arkon %!s(int64=4) %!d(string=hai) anos
pai
achega
abf2d4b718

+ 21 - 0
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<String> = 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<String>) {
+        extensions.sorted().forEach {
+            root.add(it)
+        }
+    }
+
     /**
      * Backup the categories of library
      *

+ 1 - 0
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"