Start storing extension ID/source name mapping in backup files

This commit is contained in:
arkon 2020-05-06 22:28:16 -04:00 committed by Jay
parent ce492ab7ac
commit 49d8563658
2 changed files with 20 additions and 0 deletions

View File

@ -136,20 +136,33 @@ class BackupManager(val context: Context, version: Int = CURRENT_VERSION) {
root[Backup.VERSION] = CURRENT_VERSION root[Backup.VERSION] = CURRENT_VERSION
root[Backup.MANGAS] = mangaEntries root[Backup.MANGAS] = mangaEntries
root[CATEGORIES] = categoryEntries root[CATEGORIES] = categoryEntries
root[EXTENSIONS] = extensionEntries
databaseHelper.inTransaction { databaseHelper.inTransaction {
// Get manga from database // Get manga from database
val mangas = getFavoriteManga() val mangas = getFavoriteManga()
val extensions: MutableSet<String> = mutableSetOf()
// Backup library manga and its dependencies // Backup library manga and its dependencies
mangas.forEach { manga -> mangas.forEach { manga ->
mangaEntries.add(backupMangaObject(manga, flags)) mangaEntries.add(backupMangaObject(manga, flags))
// Maintain set of extensions/sources used (excludes local source)
if (manga.source != 0L) {
sourceManager.get(manga.source)?.let {
extensions.add("${manga.source}:${it.name}")
}
}
} }
// Backup categories // Backup categories
if ((flags and BACKUP_CATEGORY_MASK) == BACKUP_CATEGORY) { if ((flags and BACKUP_CATEGORY_MASK) == BACKUP_CATEGORY) {
backupCategories(categoryEntries) backupCategories(categoryEntries)
} }
// Backup extension ID/name mapping
backupExtensionInfo(extensionEntries, extensions)
} }
try { try {
@ -192,6 +205,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 * Backup the categories of library
* *

View File

@ -14,6 +14,7 @@ object Backup {
const val TRACK = "track" const val TRACK = "track"
const val CHAPTERS = "chapters" const val CHAPTERS = "chapters"
const val CATEGORIES = "categories" const val CATEGORIES = "categories"
const val EXTENSIONS = "extensions"
const val HISTORY = "history" const val HISTORY = "history"
const val VERSION = "version" const val VERSION = "version"