mirror of
https://github.com/signalapp/Signal-Android.git
synced 2026-04-02 08:23:00 +01:00
Perform StorageServiceRestore on skip if already registered.
This commit is contained in:
committed by
Cody Henthorne
parent
bb6507a456
commit
e767434c2b
@@ -33,6 +33,7 @@ import kotlinx.coroutines.launch
|
||||
import org.signal.core.ui.compose.ComposeFragment
|
||||
import org.signal.core.ui.compose.theme.SignalTheme
|
||||
import org.signal.core.util.logging.Log
|
||||
import org.thoughtcrime.securesms.MainActivity
|
||||
import org.thoughtcrime.securesms.keyvalue.SignalStore
|
||||
import org.thoughtcrime.securesms.registration.data.network.RegisterAccountResult
|
||||
import org.thoughtcrime.securesms.registration.ui.RegistrationViewModel
|
||||
@@ -131,32 +132,39 @@ class RestoreLocalBackupFragment : ComposeFragment() {
|
||||
|
||||
override fun skipRestore() {
|
||||
sharedViewModel.skipRestore()
|
||||
findNavController().safeNavigate(RestoreLocalBackupFragmentDirections.goToEnterPhoneNumber(EnterPhoneNumberMode.RESTART_AFTER_COLLECTION))
|
||||
if (SignalStore.account.isRegistered) {
|
||||
viewLifecycleOwner.lifecycleScope.launch {
|
||||
restoreLocalBackupViewModel.performStorageServiceAccountRestoreIfNeeded()
|
||||
startActivity(MainActivity.clearTop(requireContext()))
|
||||
}
|
||||
} else {
|
||||
findNavController().safeNavigate(RestoreLocalBackupFragmentDirections.goToEnterPhoneNumber(EnterPhoneNumberMode.RESTART_AFTER_COLLECTION))
|
||||
}
|
||||
}
|
||||
|
||||
override fun confirmRestoreWithDifferentAccount() {
|
||||
SignalStore.account.resetAccountEntropyPool()
|
||||
SignalStore.account.resetAciAndPniIdentityKeysAfterFailedRestore()
|
||||
sharedViewModel.clearRecoveryPassword()
|
||||
enterBackupKeyViewModel.cancelRegistering()
|
||||
sharedViewModel.intendToRestore(hasOldDevice = false, fromRemote = false, fromLocalV2 = true)
|
||||
resetStateAfterFailedAccountMatch()
|
||||
findNavController().safeNavigate(
|
||||
RestoreLocalBackupFragmentDirections.goToEnterPhoneNumber(EnterPhoneNumberMode.RESTART_AFTER_COLLECTION)
|
||||
)
|
||||
}
|
||||
|
||||
override fun denyRestoreWithDifferentAccount() {
|
||||
SignalStore.account.resetAccountEntropyPool()
|
||||
SignalStore.account.resetAciAndPniIdentityKeysAfterFailedRestore()
|
||||
resetStateAfterFailedAccountMatch()
|
||||
SignalStore.backup.localRestoreAccountEntropyPool = null
|
||||
sharedViewModel.clearRecoveryPassword()
|
||||
enterBackupKeyViewModel.cancelRegistering()
|
||||
sharedViewModel.intendToRestore(hasOldDevice = false, fromRemote = false, fromLocalV2 = true)
|
||||
findNavController().safeNavigate(
|
||||
RestoreLocalBackupFragmentDirections.goToEnterPhoneNumber(EnterPhoneNumberMode.COLLECT_FOR_LOCAL_V2_SIGNAL_BACKUPS_RESTORE)
|
||||
)
|
||||
}
|
||||
|
||||
private fun resetStateAfterFailedAccountMatch() {
|
||||
SignalStore.account.resetAccountEntropyPool()
|
||||
SignalStore.account.resetAciAndPniIdentityKeysAfterFailedRestore()
|
||||
sharedViewModel.clearRecoveryPassword()
|
||||
enterBackupKeyViewModel.cancelRegistering()
|
||||
sharedViewModel.intendToRestore(hasOldDevice = false, fromRemote = false, fromLocalV2 = true)
|
||||
}
|
||||
|
||||
override fun routeToLegacyBackupRestoration(uri: Uri) {
|
||||
sharedViewModel.intendToRestore(hasOldDevice = false, fromRemote = false, fromLocalV2 = false)
|
||||
localBackupRestore.launch(RestoreActivity.getLocalRestoreIntent(requireContext(), uri))
|
||||
|
||||
@@ -23,6 +23,7 @@ import org.thoughtcrime.securesms.backup.v2.local.ArchiveFileSystem
|
||||
import org.thoughtcrime.securesms.backup.v2.local.LocalArchiver
|
||||
import org.thoughtcrime.securesms.backup.v2.local.SnapshotFileSystem
|
||||
import org.thoughtcrime.securesms.keyvalue.SignalStore
|
||||
import org.thoughtcrime.securesms.registration.ui.restore.StorageServiceRestore
|
||||
import org.thoughtcrime.securesms.util.DateUtils
|
||||
import java.util.Locale
|
||||
|
||||
@@ -108,6 +109,12 @@ class RestoreLocalBackupViewModel : ViewModel() {
|
||||
}
|
||||
}
|
||||
|
||||
suspend fun performStorageServiceAccountRestoreIfNeeded() {
|
||||
if (SignalStore.account.restoredAccountEntropyPool || SignalStore.svr.masterKeyForInitialDataRestore != null) {
|
||||
StorageServiceRestore.restore()
|
||||
}
|
||||
}
|
||||
|
||||
fun clearDialog() {
|
||||
internalState.update { it.copy(dialog = null) }
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user