From 7f63af659daedbdf054efc181b5a1987d04252e0 Mon Sep 17 00:00:00 2001 From: Greyson Parrelli Date: Thu, 9 Jul 2026 18:48:53 +0000 Subject: [PATCH] Preserve storageCapable across restore progress emissions in local backup V1 restore. --- .../LocalBackupRestoreViewModel.kt | 11 +++++++---- .../LocalBackupRestoreViewModelTest.kt | 12 ++++++++++-- 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/feature/registration/src/main/java/org/signal/registration/screens/localbackuprestore/LocalBackupRestoreViewModel.kt b/feature/registration/src/main/java/org/signal/registration/screens/localbackuprestore/LocalBackupRestoreViewModel.kt index 026af247e0..41bff3aced 100644 --- a/feature/registration/src/main/java/org/signal/registration/screens/localbackuprestore/LocalBackupRestoreViewModel.kt +++ b/feature/registration/src/main/java/org/signal/registration/screens/localbackuprestore/LocalBackupRestoreViewModel.kt @@ -196,16 +196,18 @@ class LocalBackupRestoreViewModel( is LocalBackupRestoreProgress.Preparing -> LocalBackupRestoreState( restorePhase = LocalBackupRestoreState.RestorePhase.Preparing, aep = currentState.aep, - v1Passphrase = currentState.v1Passphrase + v1Passphrase = currentState.v1Passphrase, + storageCapable = currentState.storageCapable ) is LocalBackupRestoreProgress.InProgress -> LocalBackupRestoreState( restorePhase = LocalBackupRestoreState.RestorePhase.InProgress, progressFraction = progress.progressFraction, aep = currentState.aep, - v1Passphrase = currentState.v1Passphrase + v1Passphrase = currentState.v1Passphrase, + storageCapable = currentState.storageCapable ) is LocalBackupRestoreProgress.Complete -> { - onRestoreComplete(_state.value.copy(aep = currentState.aep, v1Passphrase = currentState.v1Passphrase), progress) + onRestoreComplete(_state.value.copy(aep = currentState.aep, v1Passphrase = currentState.v1Passphrase, storageCapable = currentState.storageCapable), progress) _state.value } is LocalBackupRestoreProgress.IncorrectCredential -> { @@ -218,7 +220,8 @@ class LocalBackupRestoreViewModel( restorePhase = LocalBackupRestoreState.RestorePhase.Error, errorMessage = progress.cause.message, aep = currentState.aep, - v1Passphrase = currentState.v1Passphrase + v1Passphrase = currentState.v1Passphrase, + storageCapable = currentState.storageCapable ) } } diff --git a/feature/registration/src/test/java/org/signal/registration/screens/localbackuprestore/LocalBackupRestoreViewModelTest.kt b/feature/registration/src/test/java/org/signal/registration/screens/localbackuprestore/LocalBackupRestoreViewModelTest.kt index 2248f677a1..5b2b78973c 100644 --- a/feature/registration/src/test/java/org/signal/registration/screens/localbackuprestore/LocalBackupRestoreViewModelTest.kt +++ b/feature/registration/src/test/java/org/signal/registration/screens/localbackuprestore/LocalBackupRestoreViewModelTest.kt @@ -302,7 +302,11 @@ class LocalBackupRestoreViewModelTest { ) val initialState = LocalBackupRestoreState(backupInfo = backupInfo, selectedFolderUri = mockk()) - every { mockRepository.restoreV1Backup(any(), any(), any()) } returns flowOf(LocalBackupRestoreProgress.Complete(restoredSvrPin = null, restoredProfileKey = null)) + every { mockRepository.restoreV1Backup(any(), any(), any()) } returns flowOf( + LocalBackupRestoreProgress.Preparing, + LocalBackupRestoreProgress.InProgress(bytesRead = 50, totalBytes = 100), + LocalBackupRestoreProgress.Complete(restoredSvrPin = null, restoredProfileKey = null) + ) viewModel.applyEvent(initialState, LocalBackupRestoreEvents.PassphraseSubmitted("passphrase"), stateEmitter) @@ -326,7 +330,11 @@ class LocalBackupRestoreViewModelTest { ) val initialState = LocalBackupRestoreState(backupInfo = backupInfo, selectedFolderUri = mockk()) - every { mockRepository.restoreV1Backup(any(), any(), any()) } returns flowOf(LocalBackupRestoreProgress.Complete(restoredSvrPin = null, restoredProfileKey = null)) + every { mockRepository.restoreV1Backup(any(), any(), any()) } returns flowOf( + LocalBackupRestoreProgress.Preparing, + LocalBackupRestoreProgress.InProgress(bytesRead = 50, totalBytes = 100), + LocalBackupRestoreProgress.Complete(restoredSvrPin = null, restoredProfileKey = null) + ) viewModel.applyEvent(initialState, LocalBackupRestoreEvents.PassphraseSubmitted("passphrase"), stateEmitter)