diff --git a/Classes/AssistantView.m b/Classes/AssistantView.m index 7b06dcb48..25d759f4c 100644 --- a/Classes/AssistantView.m +++ b/Classes/AssistantView.m @@ -36,9 +36,8 @@ typedef enum _ViewElement { ViewElement_Email = 103, ViewElement_Domain = 104, ViewElement_Transport = 105, + ViewElement_Username_Label = 106, ViewElement_NextButton = 130, - ViewElement_Label = 200, - ViewElement_Error = 201, } ViewElement; @implementation AssistantView @@ -135,6 +134,7 @@ static UICompositeViewDescription *compositeDescription = nil; [LinphoneManager getLc], [LinphoneManager.instance lpConfigStringForKey:@"xmlrpc_url" forSection:@"assistant" withDefault:@""] .UTF8String); + linphone_account_creator_set_user_data(account_creator, (__bridge void *)(self)); linphone_account_creator_cbs_set_existence_tested(linphone_account_creator_get_callbacks(account_creator), assistant_existence_tested); linphone_account_creator_cbs_set_create_account(linphone_account_creator_get_callbacks(account_creator), @@ -341,7 +341,7 @@ static UICompositeViewDescription *compositeDescription = nil; BOOL usePhoneNumber = [LinphoneManager.instance lpConfigBoolForKey:@"use_phone_number"]; NSString *label = usePhoneNumber ? NSLocalizedString(@"PHONE NUMBER", nil) : NSLocalizedString(@"USERNAME", nil); - [self findLabel:ViewElement_Username].text = label; + [self findLabel:ViewElement_Username_Label].text = label; UITextField *text = [self findTextField:ViewElement_Username]; if (usePhoneNumber) { @@ -353,8 +353,9 @@ static UICompositeViewDescription *compositeDescription = nil; } + (void)cleanTextField:(UIView *)view { - if ([view isKindOfClass:[UITextField class]]) { - [(UITextField *)view setText:@""]; + if ([view isKindOfClass:UIAssistantTextField.class]) { + [(UIAssistantTextField *)view setText:@""]; + ((UIAssistantTextField *)view).canShowError = NO; } else { for (UIView *subview in view.subviews) { [AssistantView cleanTextField:subview]; @@ -396,30 +397,21 @@ static UICompositeViewDescription *compositeDescription = nil; - (void)prepareErrorLabels { UIAssistantTextField *createUsername = [self findTextField:ViewElement_Username]; - [createUsername - showError:NSLocalizedString(@"Invalid entry", nil) - when:^BOOL(NSString *inputEntry) { - NSString *oldRegex = - [LinphoneManager.instance lpConfigStringForKey:@"username_regex" forSection:@"assistant"]; - // new account for linphone accounts must follow a specific regex - if (currentView == _createAccountView) { - [LinphoneManager.instance lpConfigSetString:@"^[a-z0-9-_\\.]*$" - forKey:@"username_regex" - forSection:@"assistant"]; - } - LinphoneAccountCreatorStatus s = - linphone_account_creator_set_username(account_creator, inputEntry.UTF8String); - [LinphoneManager.instance lpConfigSetString:oldRegex forKey:@"username_regex" forSection:@"assistant"]; - createUsername.errorLabel.text = [self errorForStatus:s]; - return s != LinphoneAccountCreatorOk; - }]; + [createUsername showError:[self errorForStatus:LinphoneAccountCreatorUsernameInvalid] + when:^BOOL(NSString *inputEntry) { + LinphoneAccountCreatorStatus s = + linphone_account_creator_set_username(account_creator, inputEntry.UTF8String); + createUsername.errorLabel.text = [self errorForStatus:s]; + return s != LinphoneAccountCreatorOk; + }]; UIAssistantTextField *password = [self findTextField:ViewElement_Password]; - [password showError:NSLocalizedString(@"Password is too short.", nil) + [password showError:[self errorForStatus:LinphoneAccountCreatorPasswordTooShort] when:^BOOL(NSString *inputEntry) { - NSInteger password_length = - [[LinphoneManager instance] lpConfigIntForKey:@"password_length" forSection:@"assistant"]; - return password_length > 0 && inputEntry.length < password_length; + LinphoneAccountCreatorStatus s = + linphone_account_creator_set_password(account_creator, inputEntry.UTF8String); + password.errorLabel.text = [self errorForStatus:s]; + return s != LinphoneAccountCreatorOk; }]; UIAssistantTextField *password2 = [self findTextField:ViewElement_Password2]; @@ -429,11 +421,12 @@ static UICompositeViewDescription *compositeDescription = nil; }]; UIAssistantTextField *email = [self findTextField:ViewElement_Email]; - [email showError:NSLocalizedString(@"Invalid email address.", nil) + [email showError:[self errorForStatus:LinphoneAccountCreatorEmailInvalid] when:^BOOL(NSString *inputEntry) { - NSPredicate *emailTest = - [NSPredicate predicateWithFormat:@"SELF MATCHES %@", @".+@.+\\.[A-Za-z]{2}[A-Za-z]*"]; - return ![emailTest evaluateWithObject:inputEntry]; + LinphoneAccountCreatorStatus s = + linphone_account_creator_set_email(account_creator, inputEntry.UTF8String); + email.errorLabel.text = [self errorForStatus:s]; + return s != LinphoneAccountCreatorOk; }]; [self shouldEnableNextButton]; @@ -524,12 +517,10 @@ static UICompositeViewDescription *compositeDescription = nil; void assistant_existence_tested(LinphoneAccountCreator *creator, LinphoneAccountCreatorStatus status) { AssistantView *thiz = (__bridge AssistantView *)(linphone_account_creator_get_user_data(creator)); + thiz.waitView.hidden = YES; if (status == LinphoneAccountCreatorOk) { - thiz.waitView.hidden = YES; [[thiz findTextField:ViewElement_Username] showError:NSLocalizedString(@"This name is already taken.", nil)]; [thiz findButton:ViewElement_NextButton].enabled = NO; - } else { - thiz.waitView.hidden = NO; } } @@ -563,10 +554,10 @@ void assistant_validation_tested(LinphoneAccountCreator *creator, LinphoneAccoun initWithTitle:NSLocalizedString(@"Account validation failed.", nil) message: NSLocalizedString( - @"Your account could not be verified yet. You can skip this validation or try again later.", + @"Your account could not be checked yet. You can skip this validation or try again later.", nil)]; - [alert addCancelButtonWithTitle:NSLocalizedString(@"Try again", nil) block:nil]; - [alert addButtonWithTitle:NSLocalizedString(@"Ignore", nil) + [alert addCancelButtonWithTitle:NSLocalizedString(@"Cancel", nil) block:nil]; + [alert addButtonWithTitle:NSLocalizedString(@"Skip verification", nil) block:^{ [thiz addProxyConfig:linphone_account_creator_configure(creator)]; [PhoneMainView.instance changeCurrentView:DialerView.compositeViewDescription]; diff --git a/Classes/Base.lproj/AssistantSubviews.xib b/Classes/Base.lproj/AssistantSubviews.xib index 72edd3104..71d1b2139 100644 --- a/Classes/Base.lproj/AssistantSubviews.xib +++ b/Classes/Base.lproj/AssistantSubviews.xib @@ -145,6 +145,13 @@ + @@ -156,9 +163,9 @@ -