Fix backup restoring

This commit is contained in:
Koitharu
2023-07-18 12:28:02 +03:00
parent f86d873361
commit 967e8df7c9
9 changed files with 43 additions and 23 deletions

View File

@@ -14,7 +14,11 @@ import org.koitharu.kotatsu.core.backup.BackupZipInput
import org.koitharu.kotatsu.core.backup.BackupZipOutput
import org.koitharu.kotatsu.core.db.MangaDatabase
import org.koitharu.kotatsu.core.prefs.AppSettings
import java.io.*
import java.io.File
import java.io.FileDescriptor
import java.io.FileInputStream
import java.io.InputStream
import java.io.OutputStream
class AppBackupAgent : BackupAgent() {
@@ -81,10 +85,10 @@ class AppBackupAgent : BackupAgent() {
val backup = BackupZipInput(tempFile)
try {
runBlocking {
repository.restoreHistory(backup.getEntry(BackupEntry.HISTORY))
repository.restoreCategories(backup.getEntry(BackupEntry.CATEGORIES))
repository.restoreFavourites(backup.getEntry(BackupEntry.FAVOURITES))
repository.restoreSettings(backup.getEntry(BackupEntry.SETTINGS))
backup.getEntry(BackupEntry.HISTORY)?.let { repository.restoreHistory(it) }
backup.getEntry(BackupEntry.CATEGORIES)?.let { repository.restoreCategories(it) }
backup.getEntry(BackupEntry.FAVOURITES)?.let { repository.restoreFavourites(it) }
backup.getEntry(BackupEntry.SETTINGS)?.let { repository.restoreSettings(it) }
}
} finally {
backup.close()

View File

@@ -68,6 +68,11 @@ class RestoreDialogFragment : AlertDialogFragment<DialogProgressBinding>() {
private fun onRestoreDone(result: CompositeResult) {
val builder = MaterialAlertDialogBuilder(context ?: return)
when {
result.isEmpty -> {
builder.setTitle(R.string.data_not_restored)
.setMessage(R.string.data_not_restored_text)
}
result.isAllSuccess -> {
builder.setTitle(R.string.data_restored)
.setMessage(R.string.data_restored_success)

View File

@@ -48,16 +48,24 @@ class RestoreViewModel @Inject constructor(
val result = CompositeResult()
progress.value = 0f
result += repository.restoreHistory(backup.getEntry(BackupEntry.HISTORY))
backup.getEntry(BackupEntry.HISTORY)?.let {
result += repository.restoreHistory(it)
}
progress.value = 0.25f
result += repository.restoreCategories(backup.getEntry(BackupEntry.CATEGORIES))
backup.getEntry(BackupEntry.CATEGORIES)?.let {
result += repository.restoreCategories(it)
}
progress.value = 0.5f
result += repository.restoreFavourites(backup.getEntry(BackupEntry.FAVOURITES))
backup.getEntry(BackupEntry.FAVOURITES)?.let {
result += repository.restoreFavourites(it)
}
progress.value = 0.75f
result += repository.restoreSettings(backup.getEntry(BackupEntry.SETTINGS))
backup.getEntry(BackupEntry.SETTINGS)?.let {
result += repository.restoreSettings(it)
}
progress.value = 1f
onRestoreDone.call(result)