From b6a0a807c27af71c99b9864c4cfdaa8a5b8469dd Mon Sep 17 00:00:00 2001 From: Jobobby04 Date: Mon, 25 May 2020 21:09:10 -0400 Subject: [PATCH] Add Saved Searches to backup and restore --- .../tachiyomi/data/backup/BackupManager.kt | 16 ++++++++++++++++ .../data/backup/BackupRestoreService.kt | 10 ++++++++++ .../tachiyomi/data/backup/models/Backup.kt | 1 + 3 files changed, 27 insertions(+) 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 014664b14..4d1fc9170 100755 --- a/app/src/main/java/eu/kanade/tachiyomi/data/backup/BackupManager.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/backup/BackupManager.kt @@ -27,6 +27,7 @@ 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.SAVEDSEARCHES import eu.kanade.tachiyomi.data.backup.models.Backup.TRACK import eu.kanade.tachiyomi.data.backup.models.DHistory import eu.kanade.tachiyomi.data.backup.serializer.CategoryTypeAdapter @@ -55,6 +56,8 @@ import exh.eh.EHentaiThrottleManager import kotlin.math.max import rx.Observable import timber.log.Timber +import uy.kohesive.injekt.Injekt +import uy.kohesive.injekt.api.get import uy.kohesive.injekt.injectLazy class BackupManager(val context: Context, version: Int = CURRENT_VERSION) { @@ -148,6 +151,9 @@ class BackupManager(val context: Context, version: Int = CURRENT_VERSION) { // Backup extension ID/name mapping backupExtensionInfo(extensionEntries, extensions) + + root[SAVEDSEARCHES] = + Injekt.get().eh_savedSearches().get().joinToString(separator = "***") } try { @@ -492,6 +498,16 @@ class BackupManager(val context: Context, version: Int = CURRENT_VERSION) { return true } + internal fun restoreSavedSearches(jsonSavedSearches: JsonElement) { + val backupSavedSearches = jsonSavedSearches.asString.split("***").toSet() + backupSavedSearches.forEach { + val savedSearches = preferences.eh_savedSearches().get() + if (it !in savedSearches) { + preferences.eh_savedSearches().set(savedSearches + it) + } + } + } + /** * Returns manga * diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/backup/BackupRestoreService.kt b/app/src/main/java/eu/kanade/tachiyomi/data/backup/BackupRestoreService.kt index 5abaa5d09..cdb8cd882 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/backup/BackupRestoreService.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/backup/BackupRestoreService.kt @@ -19,6 +19,7 @@ import eu.kanade.tachiyomi.data.backup.models.Backup.CHAPTERS 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.MANGAS +import eu.kanade.tachiyomi.data.backup.models.Backup.SAVEDSEARCHES import eu.kanade.tachiyomi.data.backup.models.Backup.TRACK import eu.kanade.tachiyomi.data.backup.models.Backup.VERSION import eu.kanade.tachiyomi.data.backup.models.DHistory @@ -240,6 +241,8 @@ class BackupRestoreService : Service() { // Restore categories json.get(CATEGORIES)?.let { restoreCategories(it) } + json.get(SAVEDSEARCHES)?.let { restoreSavedSearches(it) } + // Store source mapping for error messages sourceMapping = BackupRestoreValidator.getSourceMapping(json) @@ -270,6 +273,13 @@ class BackupRestoreService : Service() { showRestoreProgress(restoreProgress, restoreAmount, getString(R.string.categories)) } + private fun restoreSavedSearches(savedSearchesJson: JsonElement) { + backupManager.restoreSavedSearches(savedSearchesJson) + + restoreProgress += 1 + showRestoreProgress(restoreProgress, restoreAmount, getString(R.string.eh_saved_searches)) + } + private fun restoreManga(mangaJson: JsonObject) { var manga = backupManager.parser.fromJson(mangaJson.get(MANGA)) val chapters = backupManager.parser.fromJson>( 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 917f27754..974956abd 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 @@ -17,6 +17,7 @@ object Backup { const val EXTENSIONS = "extensions" const val HISTORY = "history" const val VERSION = "version" + const val SAVEDSEARCHES = "savedsearches" fun getDefaultFilename(): String { val date = SimpleDateFormat("yyyy-MM-dd_HH-mm", Locale.getDefault()).format(Date())