From 231ece7bfbe13f1a98ab6183f613ca88fa0ca131 Mon Sep 17 00:00:00 2001 From: Ahmad Ansori Palembani Date: Mon, 4 Nov 2024 13:42:17 +0700 Subject: [PATCH] refactor(backup): Manage options from BackupCreator --- .../data/backup/create/BackupCreator.kt | 44 ++++++++++++++++--- .../creators/CategoriesBackupCreator.kt | 4 +- .../create/creators/MangaBackupCreator.kt | 2 - .../creators/PreferenceBackupCreator.kt | 10 ++--- 4 files changed, 44 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 3c25a979af..7e75443db0 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 @@ -5,11 +5,17 @@ import android.net.Uri import co.touchlab.kermit.Logger import com.hippo.unifile.UniFile import eu.kanade.tachiyomi.data.backup.BackupFileValidator +import eu.kanade.tachiyomi.data.backup.models.BackupCategory +import eu.kanade.tachiyomi.data.backup.models.BackupManga +import eu.kanade.tachiyomi.data.backup.models.BackupPreference +import eu.kanade.tachiyomi.data.backup.models.BackupSource +import eu.kanade.tachiyomi.data.backup.models.BackupSourcePreferences import eu.kanade.tachiyomi.data.backup.create.creators.CategoriesBackupCreator import eu.kanade.tachiyomi.data.backup.create.creators.MangaBackupCreator import eu.kanade.tachiyomi.data.backup.create.creators.PreferenceBackupCreator import eu.kanade.tachiyomi.data.backup.create.creators.SourcesBackupCreator import eu.kanade.tachiyomi.data.backup.models.Backup +import eu.kanade.tachiyomi.domain.manga.models.Manga import java.io.FileOutputStream import java.time.Instant import kotlinx.serialization.protobuf.ProtoBuf @@ -67,13 +73,13 @@ class BackupCreator( } val readNotFavorites = if (options.readManga) getManga.awaitReadNotFavorites() else emptyList() - val backupManga = mangaBackupCreator(getManga.awaitFavorites() + readNotFavorites, options) + val backupManga = backupMangas(getManga.awaitFavorites() + readNotFavorites, options) val backup = Backup( backupManga = backupManga, - backupCategories = categoriesBackupCreator(options), - backupSources = sourcesBackupCreator(backupManga), - backupPreferences = preferenceBackupCreator.backupAppPreferences(options), - backupSourcePreferences = preferenceBackupCreator.backupSourcePreferences(options), + backupCategories = backupCategories(options), + backupSources = backupSources(backupManga), + backupPreferences = backupAppPreferences(options), + backupSourcePreferences = backupSourcePreferences(options), ) val byteArray = parser.encodeToByteArray(Backup.serializer(), backup) @@ -101,4 +107,32 @@ class BackupCreator( throw e } } + + private suspend fun backupCategories(options: BackupOptions): List { + if (!options.categories) return emptyList() + + return categoriesBackupCreator() + } + + private suspend fun backupMangas(mangas: List, options: BackupOptions): List { + if (!options.libraryEntries) return emptyList() + + return mangaBackupCreator(mangas, options) + } + + private fun backupSources(mangas: List): List { + return sourcesBackupCreator(mangas) + } + + private fun backupAppPreferences(options: BackupOptions): List { + if (!options.appPrefs) return emptyList() + + return preferenceBackupCreator.createApp(includePrivatePreferences = options.includePrivate) + } + + private fun backupSourcePreferences(options: BackupOptions): List { + if (!options.sourcePrefs) return emptyList() + + return preferenceBackupCreator.createSource(includePrivatePreferences = options.includePrivate) + } } 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 74595a6e8a..2ae4a104d0 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 @@ -14,9 +14,7 @@ class CategoriesBackupCreator( * * @return list of [BackupCategory] to be backed up */ - suspend operator fun invoke(options: BackupOptions): List { - if (!options.categories) return emptyList() - + suspend operator fun invoke(): List { return getCategories.await() .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 7262d3263b..cfefeed412 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 @@ -20,8 +20,6 @@ class MangaBackupCreator( private val getChapter: GetChapter = Injekt.get(), ) { suspend operator fun invoke(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 5abf4ce260..20bf3a212e 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 @@ -23,21 +23,19 @@ class PreferenceBackupCreator( private val sourceManager: SourceManager = Injekt.get(), private val preferenceStore: PreferenceStore = Injekt.get(), ) { - fun backupAppPreferences(options: BackupOptions): List { - if (!options.appPrefs) return emptyList() + fun createApp(includePrivatePreferences: Boolean): List { return preferenceStore.getAll().toBackupPreferences() - .withPrivatePreferences(options.includePrivate) + .withPrivatePreferences(includePrivatePreferences) } - fun backupSourcePreferences(options: BackupOptions): List { - if (!options.sourcePrefs) return emptyList() + fun createSource(includePrivatePreferences: Boolean): List { return sourceManager.getOnlineSources() .filterIsInstance() .map { BackupSourcePreferences( it.preferenceKey(), it.sourcePreferences().all.toBackupPreferences() - .withPrivatePreferences(options.includePrivate), + .withPrivatePreferences(includePrivatePreferences), ) } }