From 7caa15bb94b3cfc62a9e8832e2ab4fc74ae3e18c Mon Sep 17 00:00:00 2001 From: Ahmad Ansori Palembani Date: Tue, 11 Jun 2024 14:39:34 +0700 Subject: [PATCH] feat: Allow user to disable library backup (from composable data settings) --- .../tachiyomi/data/backup/create/BackupCreator.kt | 14 ++++---------- .../create/creators/CategoriesBackupCreator.kt | 5 ++++- .../backup/create/creators/MangaBackupCreator.kt | 2 ++ .../create/creators/PreferenceBackupCreator.kt | 11 +++++++---- .../backup/create/creators/SourcesBackupCreator.kt | 5 ++++- 5 files changed, 21 insertions(+), 16 deletions(-) diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/backup/create/BackupCreator.kt b/app/src/main/java/eu/kanade/tachiyomi/data/backup/create/BackupCreator.kt index 5dee132742..28f785013f 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/backup/create/BackupCreator.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/backup/create/BackupCreator.kt @@ -59,17 +59,11 @@ class BackupCreator( backup = Backup( mangaBackupCreator.backupMangas(databaseManga, options), - categoriesBackupCreator.backupCategories(), + categoriesBackupCreator.backupCategories(options), emptyList(), - sourcesBackupCreator.backupExtensionInfo(databaseManga), - - if (options.appPrefs) - preferenceBackupCreator.backupAppPreferences(options.includePrivate) - else emptyList(), - - if (options.sourcePrefs) - preferenceBackupCreator.backupSourcePreferences(options.includePrivate) - else emptyList(), + sourcesBackupCreator.backupExtensionInfo(databaseManga, options), + preferenceBackupCreator.backupAppPreferences(options), + preferenceBackupCreator.backupSourcePreferences(options), ) } diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/backup/create/creators/CategoriesBackupCreator.kt b/app/src/main/java/eu/kanade/tachiyomi/data/backup/create/creators/CategoriesBackupCreator.kt index b04d3a812d..e43db389e9 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/backup/create/creators/CategoriesBackupCreator.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/backup/create/creators/CategoriesBackupCreator.kt @@ -1,5 +1,6 @@ package eu.kanade.tachiyomi.data.backup.create.creators +import eu.kanade.tachiyomi.data.backup.create.BackupOptions import eu.kanade.tachiyomi.data.backup.models.BackupCategory import eu.kanade.tachiyomi.data.database.DatabaseHelper import uy.kohesive.injekt.Injekt @@ -13,7 +14,9 @@ class CategoriesBackupCreator( * * @return list of [BackupCategory] to be backed up */ - fun backupCategories(): List { + fun backupCategories(options: BackupOptions): List { + if (!options.libraryEntries) return emptyList() + return db.getCategories() .executeAsBlocking() .map { BackupCategory.copyFrom(it) } diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/backup/create/creators/MangaBackupCreator.kt b/app/src/main/java/eu/kanade/tachiyomi/data/backup/create/creators/MangaBackupCreator.kt index f285563f0f..154fe51e0a 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/backup/create/creators/MangaBackupCreator.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/backup/create/creators/MangaBackupCreator.kt @@ -16,6 +16,8 @@ class MangaBackupCreator( private val customMangaManager: CustomMangaManager = Injekt.get(), ) { fun backupMangas(mangas: List, options: BackupOptions): List { + if (!options.libraryEntries) return emptyList() + return mangas.map { backupManga(it, options) } diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/backup/create/creators/PreferenceBackupCreator.kt b/app/src/main/java/eu/kanade/tachiyomi/data/backup/create/creators/PreferenceBackupCreator.kt index c459cba642..5abf4ce260 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/backup/create/creators/PreferenceBackupCreator.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/backup/create/creators/PreferenceBackupCreator.kt @@ -2,6 +2,7 @@ package eu.kanade.tachiyomi.data.backup.create.creators import eu.kanade.tachiyomi.core.preference.Preference import eu.kanade.tachiyomi.core.preference.PreferenceStore +import eu.kanade.tachiyomi.data.backup.create.BackupOptions import eu.kanade.tachiyomi.data.backup.models.BackupPreference import eu.kanade.tachiyomi.data.backup.models.BackupSourcePreferences import eu.kanade.tachiyomi.data.backup.models.BooleanPreferenceValue @@ -22,19 +23,21 @@ class PreferenceBackupCreator( private val sourceManager: SourceManager = Injekt.get(), private val preferenceStore: PreferenceStore = Injekt.get(), ) { - fun backupAppPreferences(includePrivate: Boolean): List { + fun backupAppPreferences(options: BackupOptions): List { + if (!options.appPrefs) return emptyList() return preferenceStore.getAll().toBackupPreferences() - .withPrivatePreferences(includePrivate) + .withPrivatePreferences(options.includePrivate) } - fun backupSourcePreferences(includePrivate: Boolean): List { + fun backupSourcePreferences(options: BackupOptions): List { + if (!options.sourcePrefs) return emptyList() return sourceManager.getOnlineSources() .filterIsInstance() .map { BackupSourcePreferences( it.preferenceKey(), it.sourcePreferences().all.toBackupPreferences() - .withPrivatePreferences(includePrivate), + .withPrivatePreferences(options.includePrivate), ) } } diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/backup/create/creators/SourcesBackupCreator.kt b/app/src/main/java/eu/kanade/tachiyomi/data/backup/create/creators/SourcesBackupCreator.kt index c944fd2fa9..ab36056887 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/backup/create/creators/SourcesBackupCreator.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/backup/create/creators/SourcesBackupCreator.kt @@ -1,5 +1,6 @@ package eu.kanade.tachiyomi.data.backup.create.creators +import eu.kanade.tachiyomi.data.backup.create.BackupOptions import eu.kanade.tachiyomi.data.backup.models.BackupSource import eu.kanade.tachiyomi.data.database.models.Manga import eu.kanade.tachiyomi.source.SourceManager @@ -9,7 +10,9 @@ import uy.kohesive.injekt.api.get class SourcesBackupCreator( private val sourceManager: SourceManager = Injekt.get(), ) { - fun backupExtensionInfo(mangas: List): List { + fun backupExtensionInfo(mangas: List, options: BackupOptions): List { + if (!options.libraryEntries) return emptyList() + return mangas .asSequence() .map { it.source }