diff --git a/app/src/main/java/org/thoughtcrime/securesms/backup/ArchiveUploadProgress.kt b/app/src/main/java/org/thoughtcrime/securesms/backup/ArchiveUploadProgress.kt index 2af3b4ceef..314f529cb2 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/backup/ArchiveUploadProgress.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/backup/ArchiveUploadProgress.kt @@ -168,8 +168,9 @@ object ArchiveUploadProgress { fun onAttachmentSectionStarted(totalAttachmentBytes: Long) { debugAttachmentStartTime = System.currentTimeMillis() + attachmentProgress.clear() updateState { - it.copy( + ArchiveUploadProgressState( state = ArchiveUploadProgressState.State.UploadMedia, mediaUploadedBytes = 0, mediaTotalBytes = totalAttachmentBytes @@ -203,15 +204,24 @@ object ArchiveUploadProgress { } fun onMessageBackupFinishedEarly() { - updateState { PROGRESS_NONE } + resetState() } fun onValidationFailure() { - updateState { PROGRESS_NONE } + resetState() } fun onMainBackupFileUploadFailure() { - updateState { PROGRESS_NONE } + resetState() + } + + private fun resetState() { + val shouldRevertToUploadMedia = SignalStore.backup.backsUpMedia && !AppDependencies.jobManager.areQueuesEmpty(UploadAttachmentToArchiveJob.QUEUES) + if (shouldRevertToUploadMedia) { + onAttachmentSectionStarted(SignalDatabase.attachments.getPendingArchiveUploadBytes()) + } else { + updateState { PROGRESS_NONE } + } } private fun updateState( 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 69bd042f0c..2c46d0ae7f 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 @@ -556,7 +556,14 @@ object BackupRepository { return } - if (!SignalStore.backup.backsUpMedia || !AppDependencies.jobManager.areQueuesEmpty(UploadAttachmentToArchiveJob.QUEUES)) { + if (!SignalStore.backup.backsUpMedia) { + return + } + + if (!AppDependencies.jobManager.areQueuesEmpty(UploadAttachmentToArchiveJob.QUEUES)) { + if (SignalStore.backup.archiveUploadState?.state == ArchiveUploadProgressState.State.None) { + ArchiveUploadProgress.onAttachmentSectionStarted(SignalDatabase.attachments.getPendingArchiveUploadBytes()) + } return }