Index: remoting/client/ios/app/remoting_view_controller.mm |
diff --git a/remoting/client/ios/app/remoting_view_controller.mm b/remoting/client/ios/app/remoting_view_controller.mm |
index 25bb218e424f4350e8e8334dcc39af631479026d..bb3c50fd6497a9ff267f8a3ad6c680d2ada428dc 100644 |
--- a/remoting/client/ios/app/remoting_view_controller.mm |
+++ b/remoting/client/ios/app/remoting_view_controller.mm |
@@ -18,6 +18,7 @@ |
#import "remoting/client/ios/app/host_view_controller.h" |
#import "remoting/client/ios/app/remoting_settings_view_controller.h" |
#import "remoting/client/ios/domain/client_session_details.h" |
+#import "remoting/client/ios/facade/remoting_authentication.h" |
#import "remoting/client/ios/facade/remoting_service.h" |
#import "remoting/client/ios/session/remoting_client.h" |
@@ -59,7 +60,6 @@ static CGFloat kHostInset = 5.f; |
self = [super initWithContentViewController:collectionVC]; |
if (self) { |
_remotingService = [RemotingService SharedInstance]; |
- [_remotingService setAuthenticationDelegate:self]; |
_collectionViewController = collectionVC; |
_collectionViewController.flexHeaderContainerViewController = self; |
@@ -100,10 +100,28 @@ static CGFloat kHostInset = 5.f; |
- (void)viewDidLoad { |
[super viewDidLoad]; |
[_appBar addSubviewsToParent]; |
+ |
+ [[NSNotificationCenter defaultCenter] |
+ addObserver:self |
+ selector:@selector(hostsDidUpdateNotification:) |
+ name:kHostsDidUpdate |
+ object:nil]; |
+ [[NSNotificationCenter defaultCenter] |
+ addObserver:self |
+ selector:@selector(userDidUpdateNotification:) |
+ name:kUserDidUpdate |
+ object:nil]; |
+} |
+ |
+- (void)viewWillAppear:(BOOL)animated { |
+ [super viewWillAppear:animated]; |
+ |
+ [self nowAuthenticated:_remotingService.authentication.user.isAuthenticated]; |
[self presentStatus]; |
} |
- (void)viewDidAppear:(BOOL)animated { |
+ [super viewDidAppear:animated]; |
if (!_isAuthenticated) { |
// TODO(nicholss): This is used as a demo of the app functionality for the |
// moment but the real app will force the login flow if unauthenticated. |
@@ -112,6 +130,8 @@ static CGFloat kHostInset = 5.f; |
MDCSnackbarMessage* message = [[MDCSnackbarMessage alloc] init]; |
message.text = @"Please login."; |
[MDCSnackbarManager showMessage:message]; |
+ } else { |
+ [_remotingService requestHostListFetch]; |
} |
} |
@@ -129,6 +149,16 @@ static CGFloat kHostInset = 5.f; |
collectionHeight); |
} |
+#pragma mark - Remoting Service Notifications |
+ |
+- (void)hostsDidUpdateNotification:(NSNotification*)notification { |
+ [_collectionViewController.collectionView reloadData]; |
+} |
+ |
+- (void)userDidUpdateNotification:(NSNotification*)notification { |
+ [self nowAuthenticated:_remotingService.authentication.user.isAuthenticated]; |
+} |
+ |
#pragma mark - RemotingAuthenticationDelegate |
- (void)nowAuthenticated:(BOOL)authenticated { |
@@ -136,12 +166,10 @@ static CGFloat kHostInset = 5.f; |
MDCSnackbarMessage* message = [[MDCSnackbarMessage alloc] init]; |
message.text = @"Logged In!"; |
[MDCSnackbarManager showMessage:message]; |
- [_remotingService setHostListDelegate:self]; |
} else { |
MDCSnackbarMessage* message = [[MDCSnackbarMessage alloc] init]; |
message.text = @"Not logged in."; |
[MDCSnackbarManager showMessage:message]; |
- [_remotingService setHostListDelegate:nil]; |
} |
_isAuthenticated = authenticated; |
[_collectionViewController.collectionView reloadData]; |
@@ -176,7 +204,7 @@ static CGFloat kHostInset = 5.f; |
completion:(void (^)())completionBlock { |
_client = [[RemotingClient alloc] init]; |
- [_remotingService |
+ [_remotingService.authentication |
callbackWithAccessToken:base::BindBlockArc(^( |
remoting::OAuthTokenGetter::Status status, |
const std::string& user_email, |
@@ -198,13 +226,11 @@ static CGFloat kHostInset = 5.f; |
} |
- (NSInteger)getHostCount { |
- NSArray<HostInfo*>* hosts = [_remotingService getHosts]; |
- return [hosts count]; |
+ return _remotingService.hosts.count; |
} |
- (HostInfo*)getHostAtIndexPath:(NSIndexPath*)path { |
- NSArray<HostInfo*>* hosts = [_remotingService getHosts]; |
- return hosts[path.row]; |
+ return _remotingService.hosts[path.row]; |
} |
#pragma mark - UIViewControllerTransitioningDelegate |
@@ -244,9 +270,9 @@ animationControllerForDismissedController:(UIViewController*)dismissed { |
} |
- (void)didSelectRefresh { |
- // TODO(nicholss) implement this. |
- NSLog(@"Should refresh..."); |
- _dialogTransitionController = [[MDCDialogTransitionController alloc] init]; |
+ // TODO(nicholss): Might want to rate limit this. Maybe remoting service |
+ // controls that. |
+ [_remotingService requestHostListFetch]; |
} |
- (void)didSelectSettings { |
@@ -260,9 +286,9 @@ animationControllerForDismissedController:(UIViewController*)dismissed { |
- (void)presentStatus { |
MDCSnackbarMessage* message = [[MDCSnackbarMessage alloc] init]; |
if (_isAuthenticated) { |
- UserInfo* user = [_remotingService getUser]; |
message.text = [NSString |
- stringWithFormat:@"Currently signed in as %@.", [user userEmail]]; |
+ stringWithFormat:@"Currently signed in as %@.", |
+ _remotingService.authentication.user.userEmail]; |
[MDCSnackbarManager showMessage:message]; |
} |
} |