Handle rate limits in registration flow.
This commit is contained in:
parent
3207aedeb6
commit
7543a82858
|
@ -302,29 +302,18 @@ NS_ASSUME_NONNULL_BEGIN
|
|||
|
||||
- (void)presentAlertWithVerificationError:(NSError *)error
|
||||
{
|
||||
UIAlertController *alertController;
|
||||
// In the case of the "rate limiting" error, we want to show the
|
||||
// "recovery suggestion", not the error's "description."
|
||||
if ([error.domain isEqualToString:TSNetworkManagerDomain] &&
|
||||
error.code == 413) {
|
||||
alertController = [UIAlertController alertControllerWithTitle:NSLocalizedString(@"REGISTRATION_VERIFICATION_FAILED_TITLE",
|
||||
@"Alert view title")
|
||||
message:error.localizedRecoverySuggestion
|
||||
preferredStyle:UIAlertControllerStyleAlert];
|
||||
} else {
|
||||
alertController = [UIAlertController alertControllerWithTitle:NSLocalizedString(@"REGISTRATION_VERIFICATION_FAILED_TITLE",
|
||||
@"Alert view title")
|
||||
message:error.localizedDescription
|
||||
preferredStyle:UIAlertControllerStyleAlert];
|
||||
}
|
||||
UIAlertAction *dismissAction = [UIAlertAction actionWithTitle:CommonStrings.dismissButton
|
||||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction *action) {
|
||||
[_challengeTextField becomeFirstResponder];
|
||||
}];
|
||||
[alertController addAction:dismissAction];
|
||||
UIAlertController *alert;
|
||||
alert = [UIAlertController
|
||||
alertControllerWithTitle:NSLocalizedString(@"REGISTRATION_VERIFICATION_FAILED_TITLE", @"Alert view title")
|
||||
message:error.localizedDescription
|
||||
preferredStyle:UIAlertControllerStyleAlert];
|
||||
[alert addAction:[UIAlertAction actionWithTitle:CommonStrings.dismissButton
|
||||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction *action) {
|
||||
[_challengeTextField becomeFirstResponder];
|
||||
}]];
|
||||
|
||||
[self presentViewController:alertController animated:YES completion:nil];
|
||||
[self presentViewController:alert animated:YES completion:nil];
|
||||
}
|
||||
|
||||
- (NSString *)validationCodeFromTextField {
|
||||
|
|
|
@ -1444,9 +1444,12 @@
|
|||
/* Alert view title */
|
||||
"REGISTRATION_VERIFICATION_FAILED_TITLE" = "Verification Failed";
|
||||
|
||||
/* Alert body, during registration */
|
||||
/* Error message indicating that regitration failed due to a missing or incorrect verification code. */
|
||||
"REGISTRATION_VERIFICATION_FAILED_WRONG_CODE_DESCRIPTION" = "The numbers you submitted don't match what we sent. Want to double check?";
|
||||
|
||||
/* Error message indicating that regitration failed due to a missing or incorrect 2FA PIN. */
|
||||
"REGISTRATION_VERIFICATION_FAILED_WRONG_PIN" = "Incorrect Registration Lock PIN.";
|
||||
|
||||
/* No comment provided by engineer. */
|
||||
"REGISTRATION_VERIFY_DEVICE" = "Activate This Device";
|
||||
|
||||
|
|
|
@ -386,24 +386,37 @@ NSString *const TSAccountManager_ServerSignalingKey = @"TSStorageServerSignaling
|
|||
if (!IsNSErrorNetworkFailure(error)) {
|
||||
OWSProdError([OWSAnalyticsEvents accountsErrorVerifyAccountRequestFailed]);
|
||||
}
|
||||
OWSAssert([error.domain isEqualToString:TSNetworkManagerDomain]);
|
||||
|
||||
DDLogWarn(@"%@ Error verifying code: %@", self.logTag, error.debugDescription);
|
||||
|
||||
switch (error.code) {
|
||||
case 403: {
|
||||
NSError *userError = OWSErrorWithCodeDescription(OWSErrorCodeUserError,
|
||||
NSLocalizedString(@"REGISTRATION_VERIFICATION_FAILED_WRONG_CODE_DESCRIPTION",
|
||||
"Alert body, during registration"));
|
||||
"Error message indicating that regitration failed due to a missing or incorrect "
|
||||
"verification code."));
|
||||
failureBlock(userError);
|
||||
break;
|
||||
}
|
||||
case 413: {
|
||||
// In the case of the "rate limiting" error, we want to show the
|
||||
// "recovery suggestion", not the error's "description."
|
||||
NSError *userError
|
||||
= OWSErrorWithCodeDescription(OWSErrorCodeUserError, error.localizedRecoverySuggestion);
|
||||
failureBlock(userError);
|
||||
break;
|
||||
}
|
||||
case 423: {
|
||||
DDLogError(@"%@ 2FA PIN required: %ld", self.logTag, error.code);
|
||||
NSError *error = OWSErrorWithCodeDescription(
|
||||
OWSErrorCodeRegistrationMissing2FAPIN, @"Registration missing 2FA PIN.");
|
||||
NSError *error = OWSErrorWithCodeDescription(OWSErrorCodeRegistrationMissing2FAPIN,
|
||||
NSLocalizedString(@"REGISTRATION_VERIFICATION_FAILED_WRONG_PIN",
|
||||
"Error message indicating that regitration failed due to a missing or incorrect 2FA PIN."));
|
||||
failureBlock(error);
|
||||
break;
|
||||
}
|
||||
default: {
|
||||
DDLogError(@"%@ verifying code failed with unhandled error: %@", self.logTag, error);
|
||||
DDLogError(@"%@ verifying code failed with unknown error: %@", self.logTag, error);
|
||||
failureBlock(error);
|
||||
break;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue