mirror of
https://github.com/signalapp/Signal-Android.git
synced 2026-04-22 01:40:07 +01:00
Reset backup id on zk verification failure during restore attempts.
This commit is contained in:
committed by
Alex Hart
parent
6e8f982e7b
commit
a5cca5b0fd
@@ -56,7 +56,23 @@ class RemoteRestoreViewModel(isOnlyRestoreOption: Boolean) : ViewModel() {
|
||||
fun reload() {
|
||||
viewModelScope.launch(Dispatchers.IO) {
|
||||
store.update { it.copy(loadState = ScreenState.LoadState.LOADING, loadAttempts = it.loadAttempts + 1) }
|
||||
val result = BackupRepository.restoreBackupFileTimestamp()
|
||||
Log.i(TAG, "Fetching remote backup information")
|
||||
var result: RestoreTimestampResult = BackupRepository.restoreBackupFileTimestamp()
|
||||
|
||||
if (result is RestoreTimestampResult.VerificationFailure && SignalStore.account.restoredAccountEntropyPool) {
|
||||
Log.w(TAG, "Resetting backup id reservation due to zk verification failure with restored AEP")
|
||||
result = when (val triggerResult = BackupRepository.triggerBackupIdReservationForRestore()) {
|
||||
is NetworkResult.Success -> {
|
||||
Log.i(TAG, "Reset successful, trying to restore timestamp")
|
||||
BackupRepository.restoreBackupFileTimestamp()
|
||||
}
|
||||
else -> {
|
||||
Log.w(TAG, "Reset unsuccessful, failing", triggerResult.getCause())
|
||||
result
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
store.update {
|
||||
when (result) {
|
||||
is RestoreTimestampResult.Success -> {
|
||||
@@ -68,6 +84,7 @@ class RemoteRestoreViewModel(isOnlyRestoreOption: Boolean) : ViewModel() {
|
||||
)
|
||||
}
|
||||
|
||||
is RestoreTimestampResult.BackupsNotEnabled,
|
||||
is RestoreTimestampResult.NotFound -> {
|
||||
it.copy(loadState = ScreenState.LoadState.NOT_FOUND)
|
||||
}
|
||||
|
||||
@@ -165,6 +165,7 @@ class RestoreViaQrViewModel : ViewModel() {
|
||||
|
||||
SignalStore.backup.lastBackupTime = result.message.backupTimestampMs ?: 0
|
||||
SignalStore.backup.isBackupTimestampRestored = true
|
||||
SignalStore.backup.restoringViaQr = true
|
||||
SignalStore.backup.backupTier = when (result.message.tier) {
|
||||
RegistrationProvisionMessage.Tier.FREE -> MessageBackupTier.FREE
|
||||
RegistrationProvisionMessage.Tier.PAID -> MessageBackupTier.PAID
|
||||
|
||||
Reference in New Issue
Block a user