Cleanup backup/restore related code
(cherry picked from commit c201b341a716b90d378dcda4bd9b8ac4a343d4fc)
This commit is contained in:
parent
2500317134
commit
b018272d3b
9 changed files with 35 additions and 35 deletions
|
|
@ -66,24 +66,22 @@ class BackupCreator(
|
|||
suspend fun backup(uri: Uri, options: BackupOptions): String {
|
||||
var file: UniFile? = null
|
||||
try {
|
||||
file = (
|
||||
if (isAutoBackup) {
|
||||
// Get dir of file and create
|
||||
val dir = UniFile.fromUri(context, uri)
|
||||
file = if (isAutoBackup) {
|
||||
// Get dir of file and create
|
||||
val dir = UniFile.fromUri(context, uri)
|
||||
|
||||
// Delete older backups
|
||||
dir?.listFiles { _, filename -> FILENAME_REGEX.matches(filename) }
|
||||
.orEmpty()
|
||||
.sortedByDescending { it.name }
|
||||
.drop(MAX_AUTO_BACKUPS - 1)
|
||||
.forEach { it.delete() }
|
||||
// Delete older backups
|
||||
dir?.listFiles { _, filename -> FILENAME_REGEX.matches(filename) }
|
||||
.orEmpty()
|
||||
.sortedByDescending { it.name }
|
||||
.drop(MAX_AUTO_BACKUPS - 1)
|
||||
.forEach { it.delete() }
|
||||
|
||||
// Create new file to place backup
|
||||
dir?.createFile(getFilename())
|
||||
} else {
|
||||
UniFile.fromUri(context, uri)
|
||||
}
|
||||
)
|
||||
// Create new file to place backup
|
||||
dir?.createFile(getFilename())
|
||||
} else {
|
||||
UniFile.fromUri(context, uri)
|
||||
}
|
||||
|
||||
if (file == null || !file.isFile) {
|
||||
throw IllegalStateException(context.stringResource(MR.strings.create_backup_file_error))
|
||||
|
|
@ -143,27 +141,29 @@ 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> {
|
||||
return mangaBackupCreator.backupMangas(mangas, options)
|
||||
if (!options.libraryEntries) return emptyList()
|
||||
|
||||
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 -->
|
||||
|
|
|
|||
|
|
@ -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 {
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -127,7 +127,7 @@ class BackupRestorer(
|
|||
|
||||
private fun CoroutineScope.restoreCategories(backupCategories: List<BackupCategory>) = launch {
|
||||
ensureActive()
|
||||
categoriesRestorer.restoreCategories(backupCategories)
|
||||
categoriesRestorer(backupCategories)
|
||||
|
||||
restoreProgress += 1
|
||||
notifier.showRestoreProgress(
|
||||
|
|
@ -171,7 +171,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}")
|
||||
|
|
@ -184,7 +184,7 @@ class BackupRestorer(
|
|||
|
||||
private fun CoroutineScope.restoreAppPreferences(preferences: List<BackupPreference>) = launch {
|
||||
ensureActive()
|
||||
preferenceRestorer.restoreAppPreferences(preferences)
|
||||
preferenceRestorer.restoreApp(preferences)
|
||||
|
||||
restoreProgress += 1
|
||||
notifier.showRestoreProgress(
|
||||
|
|
@ -197,7 +197,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 }
|
||||
|
|
|
|||
|
|
@ -71,7 +71,7 @@ class MangaRestorer(
|
|||
/**
|
||||
* Restore a single manga
|
||||
*/
|
||||
suspend fun restoreManga(
|
||||
suspend fun restore(
|
||||
backupManga: BackupManga,
|
||||
backupCategories: List<BackupCategory>,
|
||||
) {
|
||||
|
|
@ -460,7 +460,7 @@ class MangaRestorer(
|
|||
/**
|
||||
* Restore the categories from Json
|
||||
*
|
||||
* @param manga the merge manga for the references
|
||||
* @param mergeMangaId the merge manga for the references
|
||||
* @param backupMergedMangaReferences the list of backup manga references for the merged manga
|
||||
*/
|
||||
private suspend fun restoreMergedMangaReferencesForManga(
|
||||
|
|
|
|||
|
|
@ -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…
Reference in a new issue