From fddfbd8d2dcec62d7415ddba1c5011c0eee257b9 Mon Sep 17 00:00:00 2001 From: Nicholas Tinsley Date: Fri, 14 Jul 2023 15:52:02 -0400 Subject: [PATCH] Fix changing number flow in scenarios where service requires additional verification. Fixes #12985, #13059. --- .../changenumber/ChangeNumberVerifyFragment.kt | 2 +- .../RegistrationSessionProcessor.kt | 18 +++++++++++++++++- .../fragments/BaseEnterSmsCodeFragment.java | 6 +++++- 3 files changed, 23 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/changenumber/ChangeNumberVerifyFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/changenumber/ChangeNumberVerifyFragment.kt index 830bebdb0b..183fdfb584 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/changenumber/ChangeNumberVerifyFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/changenumber/ChangeNumberVerifyFragment.kt @@ -81,7 +81,7 @@ class ChangeNumberVerifyFragment : LoggingFragment(R.layout.fragment_change_phon val processor: RegistrationSessionProcessor = (result as RequestCodeResult.RequestedVerificationCode).processor - if (processor.hasResult()) { + if (processor.verificationCodeRequestSuccess()) { Log.i(TAG, "Successfully requested SMS code.") findNavController().safeNavigate(R.id.action_changePhoneNumberVerifyFragment_to_changeNumberEnterCodeFragment) } else if (processor.captchaRequired(viewModel.excludedChallenges)) { diff --git a/app/src/main/java/org/thoughtcrime/securesms/registration/RegistrationSessionProcessor.kt b/app/src/main/java/org/thoughtcrime/securesms/registration/RegistrationSessionProcessor.kt index 0eb3d937d5..14a1e126ed 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/registration/RegistrationSessionProcessor.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/registration/RegistrationSessionProcessor.kt @@ -88,6 +88,12 @@ sealed class RegistrationSessionProcessor(response: ServiceResponse 0 + } + /** * The soonest time at which the server will accept a submission of proof of ownership. * @return a unix timestamp in milliseconds, or 0 to represent null @@ -149,7 +155,17 @@ sealed class RegistrationSessionProcessor(response: ServiceResponse { if (!processor.hasResult()) { + Log.d(TAG, "Network error."); returnToPhoneEntryScreen(); } else if (processor.isInvalidSession()) { + Log.d(TAG, "Registration session is invalid."); returnToPhoneEntryScreen(); } else if (processor.cannotSubmitVerificationAttempt()) { + Log.d(TAG, "Cannot submit any more verification attempts."); returnToPhoneEntryScreen(); - } else if (!processor.canSubmitProofImmediately()) { + } else if (processor.mustWaitToSubmitProof()) { + Log.d(TAG, "Blocked from submitting proof at this time."); handleRateLimited(); } // else session state is valid and server is ready to accept code