feat: Allow user to disable library backup (from composable data settings)

This commit is contained in:
Ahmad Ansori Palembani 2024-06-11 14:39:34 +07:00
parent fd84ba9208
commit 7caa15bb94
Signed by: null2264
GPG key ID: BA64F8B60AF3EFB6
5 changed files with 21 additions and 16 deletions

View file

@ -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),
)
}

View file

@ -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<BackupCategory> {
fun backupCategories(options: BackupOptions): List<BackupCategory> {
if (!options.libraryEntries) return emptyList()
return db.getCategories()
.executeAsBlocking()
.map { BackupCategory.copyFrom(it) }

View file

@ -16,6 +16,8 @@ class MangaBackupCreator(
private val customMangaManager: CustomMangaManager = Injekt.get(),
) {
fun backupMangas(mangas: List<Manga>, options: BackupOptions): List<BackupManga> {
if (!options.libraryEntries) return emptyList()
return mangas.map {
backupManga(it, options)
}

View file

@ -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<BackupPreference> {
fun backupAppPreferences(options: BackupOptions): List<BackupPreference> {
if (!options.appPrefs) return emptyList()
return preferenceStore.getAll().toBackupPreferences()
.withPrivatePreferences(includePrivate)
.withPrivatePreferences(options.includePrivate)
}
fun backupSourcePreferences(includePrivate: Boolean): List<BackupSourcePreferences> {
fun backupSourcePreferences(options: BackupOptions): List<BackupSourcePreferences> {
if (!options.sourcePrefs) return emptyList()
return sourceManager.getOnlineSources()
.filterIsInstance<ConfigurableSource>()
.map {
BackupSourcePreferences(
it.preferenceKey(),
it.sourcePreferences().all.toBackupPreferences()
.withPrivatePreferences(includePrivate),
.withPrivatePreferences(options.includePrivate),
)
}
}

View file

@ -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<Manga>): List<BackupSource> {
fun backupExtensionInfo(mangas: List<Manga>, options: BackupOptions): List<BackupSource> {
if (!options.libraryEntries) return emptyList()
return mangas
.asSequence()
.map { it.source }