From 09a05c9f4c8ed70e7ef9a7808622e53d2d228bfe Mon Sep 17 00:00:00 2001 From: Cody Henthorne Date: Tue, 9 Sep 2025 11:48:15 -0400 Subject: [PATCH] Fix dangling progress state prior to progress status determination. --- .../backup/v2/ArchiveRestoreProgress.kt | 25 ++++++++++--------- 1 file changed, 13 insertions(+), 12 deletions(-) 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 ee29018484..d786563f1b 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 @@ -169,6 +169,18 @@ object ArchiveRestoreProgress { val remainingRestoreSize = SignalDatabase.attachments.getRemainingRestorableAttachmentSize().bytes var restoreState = SignalStore.backup.restoreState + if (restoreState.isMediaRestoreOperation) { + if (remainingRestoreSize == 0.bytes && SignalStore.backup.totalRestorableAttachmentSize == 0L) { + restoreState = RestoreState.NONE + SignalStore.backup.restoreState = restoreState + unregisterUpdateListeners() + } else { + registerUpdateListeners() + } + } else { + unregisterUpdateListeners() + } + val status = when { !WifiConstraint.isMet(AppDependencies.application) && !SignalStore.backup.restoreWithCellular -> ArchiveRestoreProgressState.RestoreStatus.WAITING_FOR_WIFI !NetworkConstraint.isMet(AppDependencies.application) -> ArchiveRestoreProgressState.RestoreStatus.WAITING_FOR_INTERNET @@ -185,17 +197,6 @@ object ArchiveRestoreProgress { } } - if (restoreState.isMediaRestoreOperation) { - if (remainingRestoreSize == 0.bytes && SignalStore.backup.totalRestorableAttachmentSize == 0L) { - restoreState = RestoreState.NONE - SignalStore.backup.restoreState = restoreState - } else { - registerUpdateListeners() - } - } else { - unregisterUpdateListeners() - } - val totalRestoreSize = SignalStore.backup.totalRestorableAttachmentSize.bytes state.copy( @@ -203,7 +204,7 @@ object ArchiveRestoreProgress { remainingRestoreSize = remainingRestoreSize, restoreStatus = status, totalRestoreSize = totalRestoreSize, - hasActivelyRestoredThisRun = state.hasActivelyRestoredThisRun || SignalStore.backup.totalRestorableAttachmentSize > 0, + hasActivelyRestoredThisRun = state.hasActivelyRestoredThisRun || totalRestoreSize > 0.bytes, totalToRestoreThisRun = if (totalRestoreSize > 0.bytes) totalRestoreSize else state.totalToRestoreThisRun ) }