Brion VIBBER has submitted this change and it was merged.

Change subject: User is automatically logged in after account creation.
......................................................................


User is automatically logged in after account creation.

Change-Id: Idd68d7af2457f80b85ac50fc9fa1afc9405e5425
---
M Wikipedia-iOS/View Controllers/AccountCreation/AccountCreationViewController.m
M Wikipedia-iOS/View Controllers/Login/LoginViewController.h
M Wikipedia-iOS/View Controllers/Login/LoginViewController.m
M Wikipedia-iOS/View Controllers/TopNav/NavController.m
4 files changed, 95 insertions(+), 53 deletions(-)

Approvals:
  Brion VIBBER: Verified; Looks good to me, approved



diff --git a/Wikipedia-iOS/View 
Controllers/AccountCreation/AccountCreationViewController.m 
b/Wikipedia-iOS/View Controllers/AccountCreation/AccountCreationViewController.m
index f77ac24..e8f99b8 100644
--- a/Wikipedia-iOS/View 
Controllers/AccountCreation/AccountCreationViewController.m
+++ b/Wikipedia-iOS/View 
Controllers/AccountCreation/AccountCreationViewController.m
@@ -9,6 +9,9 @@
 #import "CaptchaResetOp.h"
 #import "UIScrollView+ScrollSubviewToLocation.h"
 #import "UIButton+ColorMask.h"
+#import "LoginViewController.h"
+#import "UINavigationController+SearchNavStack.h"
+#import "MainMenuTableViewController.h"
 
 #define NAV ((NavController *)self.navigationController)
 
@@ -248,6 +251,24 @@
     }
 }
 
+-(void)login
+{
+    LoginViewController *loginVC = [self.navigationController 
searchNavStackForViewControllerOfClass:[LoginViewController class]];
+    
+    [self showAlert:@"Logging in..."];
+    
+    [loginVC loginWithUserName:self.usernameField.text 
password:self.passwordField.text onSuccess:^{
+
+        MainMenuTableViewController *menuVC = [self.navigationController 
searchNavStackForViewControllerOfClass:[MainMenuTableViewController class]];
+        [self.navigationController popToViewController:menuVC animated:YES];
+        
+    } onFail:^(){
+
+        [self performSelector:@selector(hide) withObject:nil afterDelay:0.5f];
+
+    }];
+}
+
 -(void)save
 {
     static BOOL isAleadySaving = NO;
@@ -281,7 +302,7 @@
                                   dispatch_async(dispatch_get_main_queue(), 
^(){
                                       [self showAlert:result];
                                       [self showAlert:@""];
-                                      [self performSelector:@selector(hide) 
withObject:nil afterDelay:1.0f];
+                                      [self performSelector:@selector(login) 
withObject:nil afterDelay:0.6f];
                                       isAleadySaving = NO;
                                   });
                                   
diff --git a/Wikipedia-iOS/View Controllers/Login/LoginViewController.h 
b/Wikipedia-iOS/View Controllers/Login/LoginViewController.h
index 7f390a3..83c124d 100644
--- a/Wikipedia-iOS/View Controllers/Login/LoginViewController.h
+++ b/Wikipedia-iOS/View Controllers/Login/LoginViewController.h
@@ -12,4 +12,9 @@
 
 - (IBAction)createAccountButtonPushed:(id)sender;
 
+- (void)loginWithUserName: (NSString *)userName
+                 password: (NSString *)password
+                onSuccess: (void (^)(void))successBlock
+                   onFail: (void (^)(void))failBlock;
+
 @end
diff --git a/Wikipedia-iOS/View Controllers/Login/LoginViewController.m 
b/Wikipedia-iOS/View Controllers/Login/LoginViewController.m
index 08295b1..5f35a4b 100644
--- a/Wikipedia-iOS/View Controllers/Login/LoginViewController.m
+++ b/Wikipedia-iOS/View Controllers/Login/LoginViewController.m
@@ -122,7 +122,11 @@
 
 -(void)save
 {
-    [self login];
+    [self loginWithUserName: self.usernameField.text
+                   password: self.passwordField.text
+                  onSuccess: ^{
+                      [self performSelector:@selector(hide) withObject:nil 
afterDelay:1.25f];
+                  } onFail: nil];
 }
 
 -(void)hide
@@ -147,9 +151,15 @@
     // Dispose of any resources that can be recreated.
 }
 
--(void)login
+-(void)loginWithUserName: (NSString *)userName
+                password: (NSString *)password
+               onSuccess: (void (^)(void))successBlock
+                  onFail: (void (^)(void))failBlock
 {
     [self showAlert:@""];
+
+    if (!successBlock) successBlock = ^(){};
+    if (!failBlock) failBlock = ^(){};
 
     /*
     void (^printCookies)() =  ^void(){
@@ -163,57 +173,61 @@
     
     //[[NSHTTPCookieStorage sharedHTTPCookieStorage] 
setCookieAcceptPolicy:NSHTTPCookieAcceptPolicyAlways];
     
-    NSString *userName = self.usernameField.text;
-    NSString *password = self.passwordField.text;
+    LoginOp *loginOp =
+    [[LoginOp alloc] initWithUsername: userName
+                             password: password
+                               domain: [SessionSingleton sharedInstance].domain
+                      completionBlock: ^(NSString *loginResult){
+                          
+                          // Login credentials should only be placed in the 
keychain if they've been authenticated.
+                          [SessionSingleton 
sharedInstance].keychainCredentials.userName = userName;
+                          [SessionSingleton 
sharedInstance].keychainCredentials.password = password;
+                          
+                          //NSString *result = 
loginResult[@"login"][@"result"];
+                          [self showAlert:loginResult];
+                          
+                          [[NSOperationQueue mainQueue] 
addOperationWithBlock:successBlock];
+                          
+                          [self cloneSessionCookies];
+                          //printCookies();
+                          
+                      } cancelledBlock: ^(NSError *error){
+                          
+                          [self showAlert:error.localizedDescription];
+
+                          [[NSOperationQueue mainQueue] 
addOperationWithBlock:failBlock];
+
+                          
+                      } errorBlock: ^(NSError *error){
+                          
+                          [self showAlert:error.localizedDescription];
+
+                          [[NSOperationQueue mainQueue] 
addOperationWithBlock:failBlock];
+                          
+                      }];
     
-    LoginOp *loginOp = [[LoginOp alloc] initWithUsername: userName
-                                                password: password
-                                                  domain: [SessionSingleton 
sharedInstance].domain
-                                         completionBlock: ^(NSString 
*loginResult){
-                                             
-                                             // Login credentials should only 
be placed in the keychain if they've been authenticated.
-                                             [SessionSingleton 
sharedInstance].keychainCredentials.userName = userName;
-                                             [SessionSingleton 
sharedInstance].keychainCredentials.password = password;
-                                             
-                                             //NSString *result = 
loginResult[@"login"][@"result"];
-                                             [self showAlert:loginResult];
-                                             
-                                             [[NSOperationQueue mainQueue] 
addOperationWithBlock: ^{
-                                                 
-                                                 [self 
performSelector:@selector(hide) withObject:nil afterDelay:1.25f];
-                                                 
-                                             }];
-                                             
-                                             [self cloneSessionCookies];
-                                             //printCookies();
-                                             
-                                         } cancelledBlock: ^(NSError *error){
-                                             
-                                             [self 
showAlert:error.localizedDescription];
-                                             
-                                         } errorBlock: ^(NSError *error){
-                                             
-                                             [self 
showAlert:error.localizedDescription];
-                                             
-                                         }];
-    
-    LoginTokenOp *loginTokenOp = [[LoginTokenOp alloc] initWithUsername: 
userName
-                                                               password: 
password
-                                                                 domain: 
[SessionSingleton sharedInstance].domain
-                                                        completionBlock: 
^(NSString *tokenRetrieved){
-                                                            
-                                                            
NSLog(@"loginTokenOp token = %@", tokenRetrieved);
-                                                            loginOp.token = 
tokenRetrieved;
-                                                            
-                                                        } cancelledBlock: 
^(NSError *error){
-                                                            
-                                                            [self 
showAlert:@""];
-                                                            
-                                                        } errorBlock: 
^(NSError *error){
-                                                            
-                                                            [self 
showAlert:error.localizedDescription];
-                                                            
-                                                        }];
+    LoginTokenOp *loginTokenOp =
+    [[LoginTokenOp alloc] initWithUsername: userName
+                                  password: password
+                                    domain: [SessionSingleton 
sharedInstance].domain
+                           completionBlock: ^(NSString *tokenRetrieved){
+                               
+                               NSLog(@"loginTokenOp token = %@", 
tokenRetrieved);
+                               loginOp.token = tokenRetrieved;
+                               
+                           } cancelledBlock: ^(NSError *error){
+                               
+                               [self showAlert:@""];
+
+                               [[NSOperationQueue mainQueue] 
addOperationWithBlock:failBlock];
+                               
+                           } errorBlock: ^(NSError *error){
+                               
+                               [self showAlert:error.localizedDescription];
+
+                               [[NSOperationQueue mainQueue] 
addOperationWithBlock:failBlock];
+                               
+                           }];
     
     loginTokenOp.delegate = self;
     loginOp.delegate = self;
diff --git a/Wikipedia-iOS/View Controllers/TopNav/NavController.m 
b/Wikipedia-iOS/View Controllers/TopNav/NavController.m
index 8f3845a..b7194f9 100644
--- a/Wikipedia-iOS/View Controllers/TopNav/NavController.m
+++ b/Wikipedia-iOS/View Controllers/TopNav/NavController.m
@@ -491,6 +491,8 @@
 {
     [super didReceiveMemoryWarning];
     // Dispose of any resources that can be recreated.
+
+    //self.navBarStyle = (self.navBarStyle == NAVBAR_STYLE_DAY) ? 
NAVBAR_STYLE_NIGHT : NAVBAR_STYLE_DAY;
 }
 
 #pragma mark NavBarStyle night/day mode management

-- 
To view, visit https://gerrit.wikimedia.org/r/116894
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: Idd68d7af2457f80b85ac50fc9fa1afc9405e5425
Gerrit-PatchSet: 1
Gerrit-Project: apps/ios/wikipedia
Gerrit-Branch: master
Gerrit-Owner: Mhurd <mh...@wikimedia.org>
Gerrit-Reviewer: Brion VIBBER <br...@wikimedia.org>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to