Fix possible ISE in registration.
This commit is contained in:
parent
fddfbd8d2d
commit
44c393f11a
1 changed files with 16 additions and 10 deletions
|
@ -294,6 +294,12 @@ public final class EnterPhoneNumberFragment extends LoggingFragment implements R
|
||||||
.doOnSubscribe(unused -> SignalStore.account().setRegistered(false))
|
.doOnSubscribe(unused -> SignalStore.account().setRegistered(false))
|
||||||
.observeOn(AndroidSchedulers.mainThread())
|
.observeOn(AndroidSchedulers.mainThread())
|
||||||
.subscribe((RegistrationSessionProcessor processor) -> {
|
.subscribe((RegistrationSessionProcessor processor) -> {
|
||||||
|
Context context = getContext();
|
||||||
|
if (context == null) {
|
||||||
|
Log.w(TAG, "[requestVerificationCode] Invalid context! Skipping.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (processor.verificationCodeRequestSuccess()) {
|
if (processor.verificationCodeRequestSuccess()) {
|
||||||
disposables.add(updateFcmTokenValue());
|
disposables.add(updateFcmTokenValue());
|
||||||
SafeNavigation.safeNavigate(navController, EnterPhoneNumberFragmentDirections.actionEnterVerificationCode());
|
SafeNavigation.safeNavigate(navController, EnterPhoneNumberFragmentDirections.actionEnterVerificationCode());
|
||||||
|
@ -302,40 +308,40 @@ public final class EnterPhoneNumberFragment extends LoggingFragment implements R
|
||||||
SafeNavigation.safeNavigate(navController, EnterPhoneNumberFragmentDirections.actionRequestCaptcha());
|
SafeNavigation.safeNavigate(navController, EnterPhoneNumberFragmentDirections.actionRequestCaptcha());
|
||||||
} else if (processor.exhaustedVerificationCodeAttempts()) {
|
} else if (processor.exhaustedVerificationCodeAttempts()) {
|
||||||
Log.i(TAG, "Unable to request sms code due to exhausting attempts");
|
Log.i(TAG, "Unable to request sms code due to exhausting attempts");
|
||||||
showErrorDialog(register.getContext(), getString(R.string.RegistrationActivity_rate_limited_to_service));
|
showErrorDialog(context, context.getString(R.string.RegistrationActivity_rate_limited_to_service));
|
||||||
} else if (processor.rateLimit()) {
|
} else if (processor.rateLimit()) {
|
||||||
Log.i(TAG, "Unable to request sms code due to rate limit");
|
Log.i(TAG, "Unable to request sms code due to rate limit");
|
||||||
showErrorDialog(register.getContext(), getString(R.string.RegistrationActivity_rate_limited_to_try_again, formatMillisecondsToString(processor.getRateLimit())));
|
showErrorDialog(context, context.getString(R.string.RegistrationActivity_rate_limited_to_try_again, formatMillisecondsToString(processor.getRateLimit())));
|
||||||
} else if (processor.isImpossibleNumber()) {
|
} else if (processor.isImpossibleNumber()) {
|
||||||
Log.w(TAG, "Impossible number", processor.getError());
|
Log.w(TAG, "Impossible number", processor.getError());
|
||||||
Dialogs.showAlertDialog(requireContext(),
|
Dialogs.showAlertDialog(requireContext(),
|
||||||
getString(R.string.RegistrationActivity_invalid_number),
|
context.getString(R.string.RegistrationActivity_invalid_number),
|
||||||
String.format(getString(R.string.RegistrationActivity_the_number_you_specified_s_is_invalid), viewModel.getNumber().getFullFormattedNumber()));
|
String.format(context.getString(R.string.RegistrationActivity_the_number_you_specified_s_is_invalid), viewModel.getNumber().getFullFormattedNumber()));
|
||||||
} else if (processor.isNonNormalizedNumber()) {
|
} else if (processor.isNonNormalizedNumber()) {
|
||||||
handleNonNormalizedNumberError(processor.getOriginalNumber(), processor.getNormalizedNumber(), mode);
|
handleNonNormalizedNumberError(processor.getOriginalNumber(), processor.getNormalizedNumber(), mode);
|
||||||
} else if (processor.isTokenRejected()) {
|
} else if (processor.isTokenRejected()) {
|
||||||
Log.i(TAG, "The server did not accept the information.", processor.getError());
|
Log.i(TAG, "The server did not accept the information.", processor.getError());
|
||||||
showErrorDialog(register.getContext(), getString(R.string.RegistrationActivity_we_need_to_verify_that_youre_human));
|
showErrorDialog(context, context.getString(R.string.RegistrationActivity_we_need_to_verify_that_youre_human));
|
||||||
} else if (processor.externalServiceFailure()) {
|
} else if (processor.externalServiceFailure()) {
|
||||||
Log.w(TAG, "The server reported a failure with an external service.", processor.getError());
|
Log.w(TAG, "The server reported a failure with an external service.", processor.getError());
|
||||||
showErrorDialog(register.getContext(), getString(R.string.RegistrationActivity_unable_to_connect_to_service), proceedToNextScreen);
|
showErrorDialog(context, context.getString(R.string.RegistrationActivity_unable_to_connect_to_service), proceedToNextScreen);
|
||||||
} else if (processor.invalidTransportModeFailure()) {
|
} else if (processor.invalidTransportModeFailure()) {
|
||||||
Log.w(TAG, "The server reported an invalid transport mode failure.", processor.getError());
|
Log.w(TAG, "The server reported an invalid transport mode failure.", processor.getError());
|
||||||
new MaterialAlertDialogBuilder(register.getContext())
|
new MaterialAlertDialogBuilder(context)
|
||||||
.setMessage(R.string.RegistrationActivity_we_couldnt_send_you_a_verification_code)
|
.setMessage(R.string.RegistrationActivity_we_couldnt_send_you_a_verification_code)
|
||||||
.setPositiveButton(R.string.RegistrationActivity_voice_call, (dialog, which) -> requestVerificationCode(Mode.PHONE_CALL))
|
.setPositiveButton(R.string.RegistrationActivity_voice_call, (dialog, which) -> requestVerificationCode(Mode.PHONE_CALL))
|
||||||
.setNegativeButton(R.string.RegistrationActivity_cancel, null)
|
.setNegativeButton(R.string.RegistrationActivity_cancel, null)
|
||||||
.show();
|
.show();
|
||||||
} else if ( processor.isMalformedRequest()){
|
} else if ( processor.isMalformedRequest()){
|
||||||
Log.w(TAG, "The server reported a malformed request.", processor.getError());
|
Log.w(TAG, "The server reported a malformed request.", processor.getError());
|
||||||
showErrorDialog(register.getContext(), getString(R.string.RegistrationActivity_unable_to_connect_to_service), proceedToNextScreen);
|
showErrorDialog(context, context.getString(R.string.RegistrationActivity_unable_to_connect_to_service), proceedToNextScreen);
|
||||||
|
|
||||||
} else if (processor.isRetryException()) {
|
} else if (processor.isRetryException()) {
|
||||||
Log.w(TAG, "The server reported a failure that is retryable.", processor.getError());
|
Log.w(TAG, "The server reported a failure that is retryable.", processor.getError());
|
||||||
showErrorDialog(register.getContext(), getString(R.string.RegistrationActivity_unable_to_connect_to_service), proceedToNextScreen);
|
showErrorDialog(context, context.getString(R.string.RegistrationActivity_unable_to_connect_to_service), proceedToNextScreen);
|
||||||
} else {
|
} else {
|
||||||
Log.i(TAG, "Unknown error during verification code request", processor.getError());
|
Log.i(TAG, "Unknown error during verification code request", processor.getError());
|
||||||
showErrorDialog(register.getContext(), getString(R.string.RegistrationActivity_unable_to_connect_to_service));
|
showErrorDialog(context, context.getString(R.string.RegistrationActivity_unable_to_connect_to_service));
|
||||||
}
|
}
|
||||||
|
|
||||||
exitInProgressUiState();
|
exitInProgressUiState();
|
||||||
|
|
Loading…
Add table
Reference in a new issue