You've already forked hotpocket
BTHLABS-66: Prepping for public release: Take five
AKA "Using Apple reviewers as QA for your project". Thanks, y'all! :)
This commit is contained in:
@@ -8,22 +8,36 @@
|
||||
#import "AuthorizationProgressViewController.h"
|
||||
|
||||
#import "AppDelegate.h"
|
||||
#import "HPAuthFlow.h"
|
||||
#import "HPCredentialsHelper.h"
|
||||
#import "MultilineLabel.h"
|
||||
#import "NSBundle+HotPocketExtensions.h"
|
||||
|
||||
@interface AuthorizationProgressViewController (AuthorizationProgressViewControllerPrivate)
|
||||
|
||||
#pragma mark - Private interface
|
||||
|
||||
-(void)presentAuthorizationError;
|
||||
|
||||
@end
|
||||
|
||||
@implementation AuthorizationProgressViewController
|
||||
|
||||
#pragma mark - View lifecycle
|
||||
|
||||
-(instancetype)initWithCoder:(NSCoder *)coder {
|
||||
if (self = [super initWithCoder:coder]) {
|
||||
self.authorizationURL = nil;
|
||||
self.webAuthenticationSession = nil;
|
||||
self.userCancelledSession = NO;
|
||||
}
|
||||
|
||||
return self;
|
||||
}
|
||||
|
||||
-(void)viewDidLoad {
|
||||
[super viewDidLoad];
|
||||
self.progressLabel.text = NSLocalizedString(@"Continue to sign out in your browser...", @"Continue to sign out in your browser...");
|
||||
self.progressLabel.text = NSLocalizedString(@"Continue to sign in in your browser...", @"Continue to sign in in your browser...");
|
||||
}
|
||||
|
||||
-(void)viewWillAppear:(BOOL)animated {
|
||||
@@ -42,14 +56,79 @@
|
||||
object:appDelegate.authFlow];
|
||||
}
|
||||
|
||||
-(void)viewWillDisappear:(BOOL)animated {
|
||||
[super viewWillDisappear:animated];
|
||||
[[NSNotificationCenter defaultCenter] removeObserver:self];
|
||||
-(void)viewDidAppear:(BOOL)animated {
|
||||
[super viewDidAppear:animated];
|
||||
AppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];
|
||||
|
||||
ASWebAuthenticationSessionCompletionHandler completionHandler = ^(NSURL *url, NSError *error) {
|
||||
dispatch_async(dispatch_get_main_queue(), ^{
|
||||
if (error != nil) {
|
||||
#ifdef DEBUG
|
||||
NSLog(@"[AuthorizationViewController.session completionHandler] error=`%@`", error);
|
||||
#endif
|
||||
if (error.code == ASWebAuthenticationSessionErrorCodeCanceledLogin) {
|
||||
self.userCancelledSession = YES;
|
||||
}
|
||||
[self presentAuthorizationError];
|
||||
} else {
|
||||
HPAuthParams *receivedAuthParams = [appDelegate.authFlow handlePostAuthenticateURL:url];
|
||||
if (receivedAuthParams != nil) {
|
||||
[appDelegate.authFlow handleAuthParams:receivedAuthParams];
|
||||
} else {
|
||||
[self presentAuthorizationError];
|
||||
}
|
||||
}
|
||||
|
||||
self.webAuthenticationSession = nil;
|
||||
});
|
||||
};
|
||||
|
||||
ASWebAuthenticationSessionCallback *callback = [ASWebAuthenticationSessionCallback callbackWithCustomScheme:[NSBundle postAuthenticateURLScheme]];
|
||||
self.webAuthenticationSession = [[ASWebAuthenticationSession alloc] initWithURL:self.authorizationURL
|
||||
callback:callback
|
||||
completionHandler:completionHandler];
|
||||
self.webAuthenticationSession.presentationContextProvider = self;
|
||||
#ifdef DEBUG
|
||||
self.webAuthenticationSession.prefersEphemeralWebBrowserSession = YES;
|
||||
#endif
|
||||
|
||||
if (self.webAuthenticationSession.canStart == NO) {
|
||||
[self presentAuthorizationError];
|
||||
return;
|
||||
}
|
||||
|
||||
[self.webAuthenticationSession start];
|
||||
}
|
||||
|
||||
-(void)viewDidDisappear:(BOOL)animated {
|
||||
[super viewDidDisappear:animated];
|
||||
self.webAuthenticationSession = nil;
|
||||
|
||||
[self.progressIndicator stopAnimating];
|
||||
|
||||
[[NSNotificationCenter defaultCenter] removeObserver:self];
|
||||
}
|
||||
|
||||
# pragma mark - Private interface
|
||||
|
||||
-(void)presentAuthorizationError {
|
||||
if (self.userCancelledSession == NO) {
|
||||
UIAlertController *alert = [UIAlertController alertControllerWithTitle:NSLocalizedString(@"Oops!", @"Oops!")
|
||||
message:NSLocalizedString(@"HotPocket couldn't complete this operation.", @"HotPocket couldn't complete this operation.")
|
||||
preferredStyle:UIAlertControllerStyleAlert];
|
||||
|
||||
[alert addAction:[UIAlertAction actionWithTitle:NSLocalizedString(@"Oh well", @"Oh well")
|
||||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction *action) {
|
||||
[alert dismissViewControllerAnimated:YES completion:^{
|
||||
[self.navigationController popViewControllerAnimated:YES];
|
||||
}];
|
||||
}]];
|
||||
|
||||
[self presentViewController:alert animated:YES completion:nil];
|
||||
} else {
|
||||
[self.navigationController popViewControllerAnimated:YES];
|
||||
}
|
||||
}
|
||||
|
||||
#pragma mark - Notification handlers
|
||||
@@ -62,19 +141,7 @@
|
||||
HPCredentials *credentials = [[HPCredentialsHelper sharedHelper] getCredentials];
|
||||
|
||||
if (credentials.usable == NO) {
|
||||
UIAlertController *alert = [UIAlertController alertControllerWithTitle:NSLocalizedString(@"Oops!", @"Oops!")
|
||||
message:NSLocalizedString(@"HotPocket couldn't complete this operation.", @"HotPocket couldn't complete this operation.")
|
||||
preferredStyle:UIAlertControllerStyleAlert];
|
||||
|
||||
[alert addAction:[UIAlertAction actionWithTitle:NSLocalizedString(@"Oh well", @"Oh well")
|
||||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction *action) {
|
||||
[alert dismissViewControllerAnimated:YES completion:^{
|
||||
[self.navigationController popViewControllerAnimated:YES];
|
||||
}];
|
||||
}]];
|
||||
|
||||
[self presentViewController:alert animated:YES completion:nil];
|
||||
[self presentAuthorizationError];
|
||||
} else {
|
||||
[self.navigationController popToRootViewControllerAnimated:YES];
|
||||
}
|
||||
@@ -85,4 +152,10 @@
|
||||
self.progressLabel.text = NSLocalizedString(@"Processing authorization...", @"Processing authorization...");
|
||||
}
|
||||
|
||||
# pragma mark - ASWebAuthenticationPresentationContextProviding implementation
|
||||
|
||||
-(ASPresentationAnchor)presentationAnchorForWebAuthenticationSession:(ASWebAuthenticationSession *)session {
|
||||
return self.view.window;
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
Reference in New Issue
Block a user