diff --git a/app/src/main/java/org/thoughtcrime/securesms/backup/v2/ArchiveRestoreProgress.kt b/app/src/main/java/org/thoughtcrime/securesms/backup/v2/ArchiveRestoreProgress.kt index ac6bf9bd93..8d9e9ece1c 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/backup/v2/ArchiveRestoreProgress.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/backup/v2/ArchiveRestoreProgress.kt @@ -91,6 +91,12 @@ object ArchiveRestoreProgress { update() } + fun onRestoreFailed() { + Log.i(TAG, "onRestoreFailed") + SignalStore.backup.restoreState = RestoreState.NONE + update() + } + fun onStartMediaRestore() { Log.i(TAG, "onStartMediaRestore") SignalStore.backup.restoreState = RestoreState.CALCULATING_MEDIA diff --git a/app/src/main/java/org/thoughtcrime/securesms/backup/v2/BackupRepository.kt b/app/src/main/java/org/thoughtcrime/securesms/backup/v2/BackupRepository.kt index a913d304d5..b0803d92ed 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/backup/v2/BackupRepository.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/backup/v2/BackupRepository.kt @@ -2151,9 +2151,13 @@ object BackupRepository { try { DataRestoreConstraint.isRestoringData = true return withContext(Dispatchers.IO) { - return@withContext BackupProgressService.start(context, context.getString(R.string.BackupProgressService_title)).use { + val result = BackupProgressService.start(context, context.getString(R.string.BackupProgressService_title)).use { restoreRemoteBackup(controller = it, cancellationSignal = { !isActive }) } + if (result !is RemoteRestoreResult.Success) { + ArchiveRestoreProgress.onRestoreFailed() + } + return@withContext result } } finally { DataRestoreConstraint.isRestoringData = false