TakafumiInoue / gtm-oauth2

Automatically exported from code.google.com/p/gtm-oauth2
0 stars 0 forks source link

Hiding view before the pop animation completes is ugly #9

Open GoogleCodeExporter opened 9 years ago

GoogleCodeExporter commented 9 years ago
The code of GTMOAuth2ViewControllerTouch's -popView make the pop animation ugly:
    if (!self.view.isHidden) {
      // Set the flag to our viewWillDisappear method so it knows
      // this is a disappearance initiated by the sign-in object,
      // not the user cancelling via the navigation controller
      didDismissSelf_ = YES;

      if (popViewBlock) {
#if NS_BLOCKS_AVAILABLE
        popViewBlock();
        self.popViewBlock = nil;
#endif
      } else {
        [self.navigationController popViewControllerAnimated:YES];
      }
      self.view.hidden = YES;
    }

I think didViewAppear_ or didDismissSelf_ can by used instead of 
self.view.isHidden as the flag to determine the run path of code so that 
self.view.hidden need not be set to YES here.

Original issue reported on code.google.com by an0...@gmail.com on 3 Aug 2012 at 2:02

GoogleCodeExporter commented 9 years ago
Hiding the view immediately is important because the server typically displays 
some inappropriate instructions for the user once sign-in has completed.

I'm not sure which flow you are saying is ugly. Dismissal of the view 
controller without completing sign-in will not go through the popView method. 

Original comment by grobb...@google.com on 7 Aug 2012 at 6:07

GoogleCodeExporter commented 9 years ago
Dismissal after signed-in is ugly.

Original comment by an0...@gmail.com on 7 Aug 2012 at 3:42

GoogleCodeExporter commented 9 years ago
When the user has signed in, the server will display an html message asking the 
user to copy an auth token. In the context of the sign-in controller, this 
messages does not make sense for the user, so the controller is trying to hide 
the message as quickly as possible.

Original comment by grobb...@google.com on 7 Aug 2012 at 5:01

GoogleCodeExporter commented 9 years ago
Then I think we can let the web view to show a more user friendly message such 
as "You've Signed In Successfully", instead of hiding the whole view.

Try presenting and dismissing GTMOAuth2ViewControllerTouch as a model view, 
you'll see it is really ugly to hide the view before the dismissing animation 
completes.

Original comment by an0...@gmail.com on 7 Aug 2012 at 5:13

GoogleCodeExporter commented 9 years ago
We do not have control over what text the server displays in the html following 
sign-in.

Original comment by grobb...@google.com on 7 Aug 2012 at 11:25

GoogleCodeExporter commented 9 years ago
No but you have absolute control over what the webview shows up.

Original comment by julien.c...@gmail.com on 20 Apr 2013 at 3:53

GoogleCodeExporter commented 9 years ago
@grobb...
> Hiding the view immediately is important because the server typically 
displays some inappropriate instructions for the user once sign-in has 
completed.

Yes WebView displays "please copy this code..."
But you may hide ONLY web view and show some kind of UIViewActivityIndicator

Also it will be useful because signIn process is not finished by that point
authCode obtained but it is not exchanged with token. Authentification process 
still continue end may fail.

But at this point view is hide instantly and also popViewBlock(); is called.
So i have ugly dismissed controller without animation (i present it moddaly)
And after that, in viewWillAppear of presentingViewController I can't use auth
because [auth canAutorize] == NO 

> I'm not sure which flow you are saying is ugly. Dismissal of the view 
controller without completing sign-in will not go through the popView method. 

Yes when i dissmiss it manually, but it goes when authCodeObtained than 
popViewBlock() is called
---
#1  in -[GTMOAuth2ViewControllerTouch popView] at 
GTMOAuth2ViewControllerTouch.m:405
#2  in -[GTMOAuth2ViewControllerTouch signIn:displayRequest:] at 
GTMOAuth2ViewControllerTouch.m:628
#3  in -[GTMOAuth2SignIn closeTheWindow] at GTMOAuth2SignIn.m:367
#4  in -[GTMOAuth2SignIn authCodeObtained] at GTMOAuth2SignIn.m:504
#5  in -[GTMOAuth2SignIn titleChanged:] at GTMOAuth2SignIn.m:458
#6  in -[GTMOAuth2ViewControllerTouch webViewDidFinishLoad:] at 
GTMOAuth2ViewControllerTouch.m:832
---

Also can you remove @private from GTMOAuth2ViewControllerTouch ivars
this will allow to fix a lot in subclasses

Original comment by serg.f...@gmail.com on 5 May 2015 at 6:34