Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(56)

Side by Side Diff: pkg/immi_samples/lib/ios/ImmiSamples/LoginPresenter.mm

Issue 2035023003: Remove service-compiler related code. (Closed) Base URL: git@github.com:dartino/sdk.git@master
Patch Set: Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright (c) 2015, the Dartino project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE.md file.
4
5 #import "LoginPresenter.h"
6
7 @interface LoginPresenter()
8 @property UINavigationController* navigationController;
9 @property Node* loginState;
10 @end
11
12 @implementation LoginPresenter
13
14 - (void)viewDidLoad {
15 self.password.delegate = self;
16 [self.logoutButton setEnabled:NO];
17 }
18
19 -(id)initWithCoder:(NSCoder*)aDecoder {
20 self = [super initWithCoder:aDecoder];
21 self.navigationController =
22 [[UINavigationController alloc] initWithRootViewController:self];
23 return self;
24 }
25
26 - (void)presentLogin:(LoginNode*)node {
27 [self updateLoginState:node.state];
28 }
29
30 - (void)patchLogin:(LoginPatch*)patch {
31 [self updateLoginState:patch.current.state];
32 }
33
34 - (void)updateLoginState:(Node*)state {
35 self.loginState = state;
36 if ([state is:LoginRequestStateNode.class]) {
37
38 LoginRequestStateNode* loginRequestNode =
39 [state as:LoginRequestStateNode.class];
40 HttpsRequestNode* requestNode = loginRequestNode.request;
41
42 NSString* authToken = requestNode.authorization;
43 NSURL* url = [NSURL URLWithString:requestNode.url];
44 NSMutableURLRequest* request = [NSMutableURLRequest requestWithURL:url];
45 [request setValue:authToken forHTTPHeaderField:@"Authorization"];
46 NSURLSession* session = [NSURLSession sharedSession];
47 NSURLSessionDataTask* postDataTask =
48 [session dataTaskWithRequest:request
49 completionHandler:^(NSData* data,
50 NSURLResponse* response,
51 NSError* error) {
52 NSString* json =
53 [[NSString alloc] initWithData:data
54 encoding:NSUTF8StringEncoding];
55 requestNode.handleResponse(json);
56 }];
57 [postDataTask resume];
58 } else if ([state is:LoggedInStateNode.class]) {
59 LoggedInStateNode* loggedInStateNode = [state as:LoggedInStateNode.class];
60
61 dispatch_async(dispatch_get_main_queue(),^() {
62 [self.logoutButton setEnabled:YES];
63 [self.loginButton setEnabled:NO];
64 [self.username setEnabled:NO];
65 [self.password setEnabled:NO];
66 [self.user setText:loggedInStateNode.user];
67 [self.response setText:@""];
68 });
69 } else if ([state is:LoggedOutStateNode.class]) {
70 dispatch_async(dispatch_get_main_queue(),^() {
71 LoggedOutStateNode* loggedOutNode = [state as:LoggedOutStateNode.class];
72
73 [self.logoutButton setEnabled:NO];
74 [self.loginButton setEnabled:YES];
75 [self.username setEnabled:YES];
76 [self.password setEnabled:YES];
77 [self.response setText:loggedOutNode.message];
78 [self.user setText:@""];
79 });
80 }
81 }
82
83 - (IBAction)handleLogin:(id)sender {
84 if ([self.loginState is:LoggedOutStateNode.class]) {
85 LoggedOutStateNode* node = [self.loginState as:LoggedOutStateNode.class];
86 node.login(self.username.text, self.password.text);
87
88 [self.username setText: @""];
89 [self.password setText: @""];
90 }
91 }
92
93 - (BOOL)textFieldShouldReturn:(UITextField*)textField {
94 [self handleLogin:textField];
95 return YES;
96 }
97
98 - (IBAction)handleLogout:(id)sender {
99 if ([self.loginState is:LoggedInStateNode.class]) {
100 LoggedInStateNode* loggedIn = [self.loginState as:LoggedInStateNode.class];
101 loggedIn.logout();
102 }
103 }
104
105 - (UIViewController*)viewController {
106 return self.navigationController;
107 }
108
109 @end
OLDNEW
« no previous file with comments | « pkg/immi_samples/lib/ios/ImmiSamples/LoginPresenter.h ('k') | pkg/immi_samples/lib/ios/ImmiSamples/MenuPresenter.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698