Cleanup backup/restore related code
(cherry picked from commit c201b341a716b90d378dcda4bd9b8ac4a343d4fc) # Conflicts: # app/src/main/java/eu/kanade/tachiyomi/data/backup/create/BackupCreator.kt
This commit is contained in:
parent
a62dd5821a
commit
e303b88b90
@ -61,8 +61,7 @@ class BackupCreator(
|
||||
suspend fun backup(uri: Uri, options: BackupOptions): String {
|
||||
var file: UniFile? = null
|
||||
try {
|
||||
file = (
|
||||
if (isAutoBackup) {
|
||||
file = if (isAutoBackup) {
|
||||
// Get dir of file and create
|
||||
val dir = UniFile.fromUri(context, uri)
|
||||
|
||||
@ -78,7 +77,6 @@ class BackupCreator(
|
||||
} else {
|
||||
UniFile.fromUri(context, uri)
|
||||
}
|
||||
)
|
||||
|
||||
if (file == null || !file.isFile) {
|
||||
throw IllegalStateException(context.stringResource(MR.strings.create_backup_file_error))
|
||||
@ -100,7 +98,7 @@ class BackupCreator(
|
||||
backupPreferences = backupAppPreferences(options),
|
||||
backupSourcePreferences = backupSourcePreferences(options),
|
||||
// SY -->
|
||||
backupSavedSearches = backupSavedSearches(),
|
||||
backupSavedSearches = backupSavedSearches(options),
|
||||
// SY <--
|
||||
)
|
||||
|
||||
@ -137,34 +135,36 @@ class BackupCreator(
|
||||
suspend fun backupCategories(options: BackupOptions): List<BackupCategory> {
|
||||
if (!options.categories) return emptyList()
|
||||
|
||||
return categoriesBackupCreator.backupCategories()
|
||||
return categoriesBackupCreator()
|
||||
}
|
||||
|
||||
suspend fun backupMangas(mangas: List<Manga>, options: BackupOptions): List<BackupManga> {
|
||||
if (!options.libraryEntries) return emptyList()
|
||||
|
||||
return mangaBackupCreator.backupMangas(mangas, options)
|
||||
return mangaBackupCreator(mangas, options)
|
||||
}
|
||||
|
||||
fun backupSources(mangas: List<BackupManga>): List<BackupSource> {
|
||||
return sourcesBackupCreator.backupSources(mangas)
|
||||
return sourcesBackupCreator(mangas)
|
||||
}
|
||||
|
||||
fun backupAppPreferences(options: BackupOptions): List<BackupPreference> {
|
||||
if (!options.appSettings) return emptyList()
|
||||
|
||||
return preferenceBackupCreator.backupAppPreferences(includePrivatePreferences = options.privateSettings)
|
||||
return preferenceBackupCreator.createApp(includePrivatePreferences = options.privateSettings)
|
||||
}
|
||||
|
||||
fun backupSourcePreferences(options: BackupOptions): List<BackupSourcePreferences> {
|
||||
if (!options.sourceSettings) return emptyList()
|
||||
|
||||
return preferenceBackupCreator.backupSourcePreferences(includePrivatePreferences = options.privateSettings)
|
||||
return preferenceBackupCreator.createSource(includePrivatePreferences = options.privateSettings)
|
||||
}
|
||||
|
||||
// SY -->
|
||||
suspend fun backupSavedSearches(): List<BackupSavedSearch> {
|
||||
return savedSearchBackupCreator.backupSavedSearches()
|
||||
suspend fun backupSavedSearches(options: BackupOptions): List<BackupSavedSearch> {
|
||||
if (!options.savedSearches) return emptyList()
|
||||
|
||||
return savedSearchBackupCreator()
|
||||
}
|
||||
// SY <--
|
||||
|
||||
|
@ -17,6 +17,7 @@ data class BackupOptions(
|
||||
// SY -->
|
||||
val customInfo: Boolean = true,
|
||||
val readEntries: Boolean = true,
|
||||
val savedSearches: Boolean = true,
|
||||
// SY <--
|
||||
) {
|
||||
|
||||
@ -32,6 +33,7 @@ data class BackupOptions(
|
||||
// SY -->
|
||||
customInfo,
|
||||
readEntries,
|
||||
savedSearches,
|
||||
// SY <--
|
||||
)
|
||||
|
||||
@ -80,6 +82,11 @@ data class BackupOptions(
|
||||
setter = { options, enabled -> options.copy(readEntries = enabled) },
|
||||
enabled = { it.libraryEntries },
|
||||
),
|
||||
Entry(
|
||||
label = SYMR.strings.saved_searches,
|
||||
getter = BackupOptions::savedSearches,
|
||||
setter = { options, enabled -> options.copy(savedSearches = enabled) },
|
||||
),
|
||||
// SY <--
|
||||
)
|
||||
|
||||
@ -114,6 +121,7 @@ data class BackupOptions(
|
||||
// SY -->
|
||||
customInfo = array[8],
|
||||
readEntries = array[9],
|
||||
savedSearches = array[10],
|
||||
// SY <--
|
||||
)
|
||||
}
|
||||
|
@ -11,7 +11,7 @@ class CategoriesBackupCreator(
|
||||
private val getCategories: GetCategories = Injekt.get(),
|
||||
) {
|
||||
|
||||
suspend fun backupCategories(): List<BackupCategory> {
|
||||
suspend operator fun invoke(): List<BackupCategory> {
|
||||
return getCategories.await()
|
||||
.filterNot(Category::isSystemCategory)
|
||||
.map(backupCategoryMapper)
|
||||
|
@ -34,7 +34,7 @@ class MangaBackupCreator(
|
||||
// SY <--
|
||||
) {
|
||||
|
||||
suspend fun backupMangas(mangas: List<Manga>, options: BackupOptions): List<BackupManga> {
|
||||
suspend operator fun invoke(mangas: List<Manga>, options: BackupOptions): List<BackupManga> {
|
||||
return mangas.map {
|
||||
backupManga(it, options)
|
||||
}
|
||||
|
@ -22,12 +22,12 @@ class PreferenceBackupCreator(
|
||||
private val preferenceStore: PreferenceStore = Injekt.get(),
|
||||
) {
|
||||
|
||||
fun backupAppPreferences(includePrivatePreferences: Boolean): List<BackupPreference> {
|
||||
fun createApp(includePrivatePreferences: Boolean): List<BackupPreference> {
|
||||
return preferenceStore.getAll().toBackupPreferences()
|
||||
.withPrivatePreferences(includePrivatePreferences)
|
||||
}
|
||||
|
||||
fun backupSourcePreferences(includePrivatePreferences: Boolean): List<BackupSourcePreferences> {
|
||||
fun createSource(includePrivatePreferences: Boolean): List<BackupSourcePreferences> {
|
||||
return sourceManager.getCatalogueSources()
|
||||
.filterIsInstance<ConfigurableSource>()
|
||||
.map {
|
||||
|
@ -10,7 +10,7 @@ class SavedSearchBackupCreator(
|
||||
private val handler: DatabaseHandler = Injekt.get()
|
||||
) {
|
||||
|
||||
suspend fun backupSavedSearches(): List<BackupSavedSearch> {
|
||||
suspend operator fun invoke(): List<BackupSavedSearch> {
|
||||
return handler.awaitList { saved_searchQueries.selectAll(backupSavedSearchMapper) }
|
||||
}
|
||||
}
|
||||
|
@ -11,7 +11,7 @@ class SourcesBackupCreator(
|
||||
private val sourceManager: SourceManager = Injekt.get(),
|
||||
) {
|
||||
|
||||
fun backupSources(mangas: List<BackupManga>): List<BackupSource> {
|
||||
operator fun invoke(mangas: List<BackupManga>): List<BackupSource> {
|
||||
return mangas
|
||||
.asSequence()
|
||||
.map(BackupManga::source)
|
||||
|
@ -117,7 +117,7 @@ class BackupRestorer(
|
||||
|
||||
private fun CoroutineScope.restoreCategories(backupCategories: List<BackupCategory>) = launch {
|
||||
ensureActive()
|
||||
categoriesRestorer.restoreCategories(backupCategories)
|
||||
categoriesRestorer(backupCategories)
|
||||
|
||||
restoreProgress += 1
|
||||
notifier.showRestoreProgress(
|
||||
@ -153,7 +153,7 @@ class BackupRestorer(
|
||||
ensureActive()
|
||||
|
||||
try {
|
||||
mangaRestorer.restoreManga(it, backupCategories)
|
||||
mangaRestorer.restore(it, backupCategories)
|
||||
} catch (e: Exception) {
|
||||
val sourceName = sourceMapping[it.source] ?: it.source.toString()
|
||||
errors.add(Date() to "${it.title} [$sourceName]: ${e.message}")
|
||||
@ -166,7 +166,7 @@ class BackupRestorer(
|
||||
|
||||
private fun CoroutineScope.restoreAppPreferences(preferences: List<BackupPreference>) = launch {
|
||||
ensureActive()
|
||||
preferenceRestorer.restoreAppPreferences(preferences)
|
||||
preferenceRestorer.restoreApp(preferences)
|
||||
|
||||
restoreProgress += 1
|
||||
notifier.showRestoreProgress(
|
||||
@ -179,7 +179,7 @@ class BackupRestorer(
|
||||
|
||||
private fun CoroutineScope.restoreSourcePreferences(preferences: List<BackupSourcePreferences>) = launch {
|
||||
ensureActive()
|
||||
preferenceRestorer.restoreSourcePreferences(preferences)
|
||||
preferenceRestorer.restoreSource(preferences)
|
||||
|
||||
restoreProgress += 1
|
||||
notifier.showRestoreProgress(
|
||||
|
@ -13,7 +13,7 @@ class CategoriesRestorer(
|
||||
private val libraryPreferences: LibraryPreferences = Injekt.get(),
|
||||
) {
|
||||
|
||||
suspend fun restoreCategories(backupCategories: List<BackupCategory>) {
|
||||
suspend operator fun invoke(backupCategories: List<BackupCategory>) {
|
||||
if (backupCategories.isNotEmpty()) {
|
||||
val dbCategories = getCategories.await()
|
||||
val dbCategoriesByName = dbCategories.associateBy { it.name }
|
||||
|
@ -68,7 +68,7 @@ class MangaRestorer(
|
||||
)
|
||||
}
|
||||
|
||||
suspend fun restoreManga(
|
||||
suspend fun restore(
|
||||
backupManga: BackupManga,
|
||||
backupCategories: List<BackupCategory>,
|
||||
) {
|
||||
|
@ -22,14 +22,14 @@ class PreferenceRestorer(
|
||||
private val preferenceStore: PreferenceStore = Injekt.get(),
|
||||
) {
|
||||
|
||||
fun restoreAppPreferences(preferences: List<BackupPreference>) {
|
||||
fun restoreApp(preferences: List<BackupPreference>) {
|
||||
restorePreferences(preferences, preferenceStore)
|
||||
|
||||
LibraryUpdateJob.setupTask(context)
|
||||
BackupCreateJob.setupTask(context)
|
||||
}
|
||||
|
||||
fun restoreSourcePreferences(preferences: List<BackupSourcePreferences>) {
|
||||
fun restoreSource(preferences: List<BackupSourcePreferences>) {
|
||||
preferences.forEach {
|
||||
val sourcePrefs = AndroidPreferenceStore(context, sourcePreferences(it.sourceKey))
|
||||
restorePreferences(it.prefs, sourcePrefs)
|
||||
|
Loading…
x
Reference in New Issue
Block a user