mirror of
https://github.com/signalapp/Signal-Android.git
synced 2026-08-06 13:31:18 +01:00
Fix some more remote restore bugs in regV5.
This commit is contained in:
committed by
Alex Hart
parent
e45a4476d3
commit
ca7762c3d0
+18
@@ -59,8 +59,11 @@ import org.signal.registration.NetworkController.SvrCredentials
|
||||
import org.signal.registration.NetworkController.ThirdPartyServiceErrorResponse
|
||||
import org.signal.registration.NetworkController.UpdateSessionError
|
||||
import org.signal.registration.NetworkController.VerificationCodeTransport
|
||||
import org.signal.registration.NetworkController.VerifyBackupKeyError
|
||||
import org.signal.registration.proto.RegistrationProvisionMessage
|
||||
import org.thoughtcrime.securesms.BuildConfig
|
||||
import org.thoughtcrime.securesms.backup.v2.BackupRepository
|
||||
import org.thoughtcrime.securesms.backup.v2.RestoreTimestampResult
|
||||
import org.thoughtcrime.securesms.database.SignalDatabase
|
||||
import org.thoughtcrime.securesms.dependencies.AppDependencies
|
||||
import org.thoughtcrime.securesms.gcm.FcmUtil
|
||||
@@ -745,6 +748,21 @@ class AppRegistrationNetworkController(
|
||||
}
|
||||
}
|
||||
|
||||
override suspend fun verifyBackupKeyAssociatedWithAccount(aep: AccountEntropyPool): RequestResult<Unit, VerifyBackupKeyError> = withContext(Dispatchers.IO) {
|
||||
val aci = SignalStore.account.aci ?: return@withContext RequestResult.ApplicationError(IllegalStateException("ACI not available"))
|
||||
|
||||
when (val result = BackupRepository.verifyBackupKeyAssociatedWithAccount(aci, aep)) {
|
||||
is RestoreTimestampResult.Success -> RequestResult.Success(Unit)
|
||||
RestoreTimestampResult.NotFound,
|
||||
RestoreTimestampResult.BackupsNotEnabled -> RequestResult.NonSuccess(VerifyBackupKeyError.NoBackup)
|
||||
RestoreTimestampResult.VerificationFailure -> RequestResult.NonSuccess(VerifyBackupKeyError.IncorrectKey)
|
||||
is RestoreTimestampResult.RateLimited -> RequestResult.NonSuccess(VerifyBackupKeyError.RateLimited(result.retryAfter))
|
||||
// Failure is the catch-all for "couldn't check the backup"; the specific outcomes are already broken out above, so
|
||||
// this is overwhelmingly a connectivity/transport issue (e.g. no network).
|
||||
RestoreTimestampResult.Failure -> RequestResult.RetryableNetworkError(IOException("Failed to verify backup key associated with account"))
|
||||
}
|
||||
}
|
||||
|
||||
override fun startNewDeviceTransferServer(context: Context, aep: AccountEntropyPool) {
|
||||
val pendingIntent = android.app.PendingIntent.getActivity(
|
||||
context,
|
||||
|
||||
Reference in New Issue
Block a user