Add Saved Searches to backup and restore

This commit is contained in:
Jobobby04 2020-05-25 21:09:10 -04:00
parent 766bf0539d
commit b6a0a807c2
3 changed files with 27 additions and 0 deletions

View File

@ -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.EXTENSIONS
import eu.kanade.tachiyomi.data.backup.models.Backup.HISTORY 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.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.Backup.TRACK
import eu.kanade.tachiyomi.data.backup.models.DHistory import eu.kanade.tachiyomi.data.backup.models.DHistory
import eu.kanade.tachiyomi.data.backup.serializer.CategoryTypeAdapter import eu.kanade.tachiyomi.data.backup.serializer.CategoryTypeAdapter
@ -55,6 +56,8 @@ import exh.eh.EHentaiThrottleManager
import kotlin.math.max import kotlin.math.max
import rx.Observable import rx.Observable
import timber.log.Timber import timber.log.Timber
import uy.kohesive.injekt.Injekt
import uy.kohesive.injekt.api.get
import uy.kohesive.injekt.injectLazy import uy.kohesive.injekt.injectLazy
class BackupManager(val context: Context, version: Int = CURRENT_VERSION) { 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 // Backup extension ID/name mapping
backupExtensionInfo(extensionEntries, extensions) backupExtensionInfo(extensionEntries, extensions)
root[SAVEDSEARCHES] =
Injekt.get<PreferencesHelper>().eh_savedSearches().get().joinToString(separator = "***")
} }
try { try {
@ -492,6 +498,16 @@ class BackupManager(val context: Context, version: Int = CURRENT_VERSION) {
return true 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 * Returns manga
* *

View File

@ -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.HISTORY
import eu.kanade.tachiyomi.data.backup.models.Backup.MANGA 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.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.TRACK
import eu.kanade.tachiyomi.data.backup.models.Backup.VERSION import eu.kanade.tachiyomi.data.backup.models.Backup.VERSION
import eu.kanade.tachiyomi.data.backup.models.DHistory import eu.kanade.tachiyomi.data.backup.models.DHistory
@ -240,6 +241,8 @@ class BackupRestoreService : Service() {
// Restore categories // Restore categories
json.get(CATEGORIES)?.let { restoreCategories(it) } json.get(CATEGORIES)?.let { restoreCategories(it) }
json.get(SAVEDSEARCHES)?.let { restoreSavedSearches(it) }
// Store source mapping for error messages // Store source mapping for error messages
sourceMapping = BackupRestoreValidator.getSourceMapping(json) sourceMapping = BackupRestoreValidator.getSourceMapping(json)
@ -270,6 +273,13 @@ class BackupRestoreService : Service() {
showRestoreProgress(restoreProgress, restoreAmount, getString(R.string.categories)) 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) { private fun restoreManga(mangaJson: JsonObject) {
var manga = backupManager.parser.fromJson<MangaImpl>(mangaJson.get(MANGA)) var manga = backupManager.parser.fromJson<MangaImpl>(mangaJson.get(MANGA))
val chapters = backupManager.parser.fromJson<List<ChapterImpl>>( val chapters = backupManager.parser.fromJson<List<ChapterImpl>>(

View File

@ -17,6 +17,7 @@ object Backup {
const val EXTENSIONS = "extensions" const val EXTENSIONS = "extensions"
const val HISTORY = "history" const val HISTORY = "history"
const val VERSION = "version" const val VERSION = "version"
const val SAVEDSEARCHES = "savedsearches"
fun getDefaultFilename(): String { fun getDefaultFilename(): String {
val date = SimpleDateFormat("yyyy-MM-dd_HH-mm", Locale.getDefault()).format(Date()) val date = SimpleDateFormat("yyyy-MM-dd_HH-mm", Locale.getDefault()).format(Date())