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:
AntsyLich 2024-07-30 04:59:16 +06:00 committed by Jobobby04
parent a62dd5821a
commit e303b88b90
11 changed files with 46 additions and 38 deletions

View File

@ -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 <--

View File

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

View File

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

View File

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

View File

@ -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 {

View File

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

View File

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

View File

@ -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(

View File

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

View File

@ -68,7 +68,7 @@ class MangaRestorer(
)
}
suspend fun restoreManga(
suspend fun restore(
backupManga: BackupManga,
backupCategories: List<BackupCategory>,
) {

View File

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