Fix backup restoring
This commit is contained in:
@@ -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()
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user