From 2c626a233c536120d5f8e8975c239c6a4762effa Mon Sep 17 00:00:00 2001 From: John Mejia Date: Sat, 22 Aug 2015 11:29:01 -0400 Subject: [PATCH] Fix for Tapping "I want this", then cancelling does not bring back the alert view. issue #373 --- Classes/UVBaseViewController.h | 2 +- Classes/UVBaseViewController.m | 5 ++--- Classes/UVSigninManager.h | 2 +- Classes/UVSigninManager.m | 19 +++++++++++++++---- Classes/UVSuggestionDetailsViewController.m | 8 +++++++- 5 files changed, 26 insertions(+), 10 deletions(-) diff --git a/Classes/UVBaseViewController.h b/Classes/UVBaseViewController.h index 25906335..cad82166 100644 --- a/Classes/UVBaseViewController.h +++ b/Classes/UVBaseViewController.h @@ -61,7 +61,7 @@ // specialized behavior. - (void)didReceiveError:(NSError *)error; -- (void)requireUserSignedIn:(UVCallback *)callback; +- (void)requireUserSignedIn:(UVCallback *)callback ifCanceledDo:(UVCallback *)cancelCallBack; - (void)requireUserAuthenticated:(NSString *)email name:(NSString *)name callback:(UVCallback *)callback; // Keyboard handling diff --git a/Classes/UVBaseViewController.m b/Classes/UVBaseViewController.m index a93ba66e..1a346b6f 100755 --- a/Classes/UVBaseViewController.m +++ b/Classes/UVBaseViewController.m @@ -372,10 +372,9 @@ - (void)setView:(UIView *)view { } } -- (void)requireUserSignedIn:(UVCallback *)callback { - [_signinManager signInWithCallback:callback]; +- (void)requireUserSignedIn:(UVCallback *)callback ifCanceledDo:(UVCallback *)cancelCallBack { + [_signinManager signInWithCallback:callback cancelCallBack:cancelCallBack]; } - - (void)requireUserAuthenticated:(NSString *)email name:(NSString *)name callback:(UVCallback *)callback { [_signinManager signInWithEmail:email name:name callback:callback]; } diff --git a/Classes/UVSigninManager.h b/Classes/UVSigninManager.h index 34ced419..2d2501f9 100644 --- a/Classes/UVSigninManager.h +++ b/Classes/UVSigninManager.h @@ -20,7 +20,7 @@ + (UVSigninManager *)manager; -- (void)signInWithCallback:(UVCallback *)callback; +- (void)signInWithCallback:(UVCallback *)callback cancelCallBack:(UVCallback *)cancelCallBack; - (void)signInWithEmail:(NSString *)theEmail name:(NSString *)theName callback:(UVCallback *)callback; @property (nonatomic, assign) id delegate; diff --git a/Classes/UVSigninManager.m b/Classes/UVSigninManager.m index 9906110c..87563365 100644 --- a/Classes/UVSigninManager.m +++ b/Classes/UVSigninManager.m @@ -19,6 +19,7 @@ @implementation UVSigninManager { NSInteger _state; UVCallback *_callback; + UVCallback *_cancelCallback; NSRegularExpression *_emailFormat; } @@ -112,7 +113,7 @@ - (void)showEmailFormatError { [self invokeDidFail]; } -- (void)signInWithCallback:(UVCallback *)callback { +- (void)signInWithCallback:(UVCallback *)callback cancelCallBack:(UVCallback *)cancelCallBack; { if ([self user]) { [callback invokeCallback:nil]; } else { @@ -123,6 +124,7 @@ - (void)signInWithCallback:(UVCallback *)callback { [self signInWithEmail:storedEmail name:storedName callback:callback]; } else { _callback = callback; + _cancelCallback = cancelCallBack; [self showEmailAlertView]; } } @@ -204,11 +206,20 @@ - (void)didSendForgotPassword:(id)obj { - (void)alertView:(UIAlertView *)theAlertView willDismissWithButtonIndex:(NSInteger)buttonIndex { if (_state == STATE_EMAIL) { - if (buttonIndex == 1) { + if (buttonIndex == 0) { + if (_cancelCallback) { + [_cancelCallback invokeCallback:nil]; + _cancelCallback = nil; + } + }else if(buttonIndex == 1) { NSString *text = [_alertView textFieldAtIndex:0].text; - if (text.length == 0) + if (text.length == 0){ + if (_cancelCallback) { + [_cancelCallback invokeCallback:nil]; + _cancelCallback = nil; + } return; - + } _email = text; [UVUser discoverWithEmail:text delegate:self]; } diff --git a/Classes/UVSuggestionDetailsViewController.m b/Classes/UVSuggestionDetailsViewController.m index 2109e2dd..43a967e6 100644 --- a/Classes/UVSuggestionDetailsViewController.m +++ b/Classes/UVSuggestionDetailsViewController.m @@ -41,6 +41,7 @@ @implementation UVSuggestionDetailsViewController { BOOL _subscribing; BOOL _loading; UVCallback *_subscribeCallback; + UVCallback *_canceledEmailInputOnsubscribeCallback; UISwitch *_toggle; } @@ -49,6 +50,7 @@ - (id)init { if (self) { _subscribeCallback = [[UVCallback alloc] initWithTarget:self selector:@selector(doSubscribe)]; + _canceledEmailInputOnsubscribeCallback = [[UVCallback alloc] initWithTarget:self selector:@selector(cancelledEmailInputSubscribe)]; } return self; @@ -393,7 +395,11 @@ - (void)toggleSubscribed { - (void)subscribe { if (_subscribing) return; _subscribing = YES; - [self requireUserSignedIn:_subscribeCallback]; + [self requireUserSignedIn:_subscribeCallback ifCanceledDo:_canceledEmailInputOnsubscribeCallback]; +} + +- (void)cancelledEmailInputSubscribe{ + _subscribing = NO; } - (void)doSubscribe {