@@ -56,13 +56,13 @@ public void initInstance(
5656 @ NonNull GoogleSignInWrapper googleSignInWrapper ) {
5757 this .messenger = messenger ;
5858 delegate = new Delegate (context , googleSignInWrapper );
59- GoogleSignInApi .setup (messenger , delegate );
59+ GoogleSignInApi .setUp (messenger , delegate );
6060 }
6161
6262 private void dispose () {
6363 delegate = null ;
6464 if (messenger != null ) {
65- GoogleSignInApi .setup (messenger , null );
65+ GoogleSignInApi .setUp (messenger , null );
6666 messenger = null ;
6767 }
6868 }
@@ -241,6 +241,30 @@ void requestScopes(
241241 final @ NonNull MethodChannel .Result result , final @ NonNull List <String > scopes );
242242 }
243243
244+ /**
245+ * Helper class for supporting the legacy IDelegate interface based on raw method channels, which
246+ * handles converting any FlutterErrors (or other {@code Throwable}s in case any non- FlutterError
247+ * exceptions slip through) thrown by the new code paths into {@code error} callbacks.
248+ */
249+ private abstract static class ErrorConvertingMethodChannelVoidResult
250+ implements Messages .VoidResult {
251+ final @ NonNull MethodChannel .Result result ;
252+
253+ public ErrorConvertingMethodChannelVoidResult (@ NonNull MethodChannel .Result result ) {
254+ this .result = result ;
255+ }
256+
257+ @ Override
258+ public void error (@ NonNull Throwable error ) {
259+ if (error instanceof FlutterError ) {
260+ FlutterError flutterError = (FlutterError ) error ;
261+ result .error (flutterError .code , flutterError .getMessage (), flutterError .details );
262+ } else {
263+ result .error ("exception" , error .getMessage (), null );
264+ }
265+ }
266+ }
267+
244268 /**
245269 * Helper class for supporting the legacy IDelegate interface based on raw method channels, which
246270 * handles converting any FlutterErrors (or other {@code Throwable}s in case any non- FlutterError
@@ -296,13 +320,13 @@ public void success(Messages.UserData data) {
296320 * Helper class for supporting the legacy IDelegate interface based on raw method channels, which
297321 * handles converting responses from methods that return {@code Void}.
298322 */
299- private static class VoidMethodChannelResult extends ErrorConvertingMethodChannelResult < Void > {
323+ private static class VoidMethodChannelResult extends ErrorConvertingMethodChannelVoidResult {
300324 public VoidMethodChannelResult (MethodChannel .Result result ) {
301325 super (result );
302326 }
303327
304328 @ Override
305- public void success (Void unused ) {
329+ public void success () {
306330 result .success (null );
307331 }
308332 }
@@ -367,7 +391,7 @@ public void setActivity(@Nullable Activity activity) {
367391 private void checkAndSetPendingOperation (
368392 String method ,
369393 Messages .Result <Messages .UserData > userDataResult ,
370- Messages .Result < Void > voidResult ,
394+ Messages .VoidResult voidResult ,
371395 Messages .Result <Boolean > boolResult ,
372396 Messages .Result <String > stringResult ,
373397 Object data ) {
@@ -385,7 +409,7 @@ private void checkAndSetPendingSignInOperation(
385409 }
386410
387411 private void checkAndSetPendingVoidOperation (
388- String method , @ NonNull Messages .Result < Void > result ) {
412+ String method , @ NonNull Messages .VoidResult result ) {
389413 checkAndSetPendingOperation (method , null , result , null , null , null );
390414 }
391415
@@ -557,7 +581,7 @@ public void signIn(@NonNull MethodChannel.Result result) {
557581 * sign back in.
558582 */
559583 @ Override
560- public void signOut (@ NonNull Messages .Result < Void > result ) {
584+ public void signOut (@ NonNull Messages .VoidResult result ) {
561585 checkAndSetPendingVoidOperation ("signOut" , result );
562586
563587 signInClient
@@ -580,7 +604,7 @@ public void signOut(@NonNull MethodChannel.Result result) {
580604
581605 /** Signs the user out, and revokes their credentials. */
582606 @ Override
583- public void disconnect (@ NonNull Messages .Result < Void > result ) {
607+ public void disconnect (@ NonNull Messages .VoidResult result ) {
584608 checkAndSetPendingVoidOperation ("disconnect" , result );
585609
586610 signInClient
@@ -705,7 +729,7 @@ private String errorCodeForStatus(int statusCode) {
705729 }
706730
707731 private void finishWithSuccess () {
708- Objects .requireNonNull (pendingOperation .voidResult ).success (null );
732+ Objects .requireNonNull (pendingOperation .voidResult ).success ();
709733 pendingOperation = null ;
710734 }
711735
@@ -720,32 +744,35 @@ private void finishWithUserData(Messages.UserData data) {
720744 }
721745
722746 private void finishWithError (String errorCode , String errorMessage ) {
723- Messages .Result <?> result ;
724- if (pendingOperation .userDataResult != null ) {
725- result = pendingOperation .userDataResult ;
726- } else if (pendingOperation .boolResult != null ) {
727- result = pendingOperation .boolResult ;
728- } else if (pendingOperation .stringResult != null ) {
729- result = pendingOperation .stringResult ;
747+ if (pendingOperation .voidResult != null ) {
748+ Objects .requireNonNull (pendingOperation .voidResult )
749+ .error (new FlutterError (errorCode , errorMessage , null ));
730750 } else {
731- result = pendingOperation .voidResult ;
751+ Messages .Result <?> result ;
752+ if (pendingOperation .userDataResult != null ) {
753+ result = pendingOperation .userDataResult ;
754+ } else if (pendingOperation .boolResult != null ) {
755+ result = pendingOperation .boolResult ;
756+ } else {
757+ result = pendingOperation .stringResult ;
758+ }
759+ Objects .requireNonNull (result ).error (new FlutterError (errorCode , errorMessage , null ));
732760 }
733- Objects .requireNonNull (result ).error (new FlutterError (errorCode , errorMessage , null ));
734761 pendingOperation = null ;
735762 }
736763
737764 private static class PendingOperation {
738765 final @ NonNull String method ;
739766 final @ Nullable Messages .Result <Messages .UserData > userDataResult ;
740- final @ Nullable Messages .Result < Void > voidResult ;
767+ final @ Nullable Messages .VoidResult voidResult ;
741768 final @ Nullable Messages .Result <Boolean > boolResult ;
742769 final @ Nullable Messages .Result <String > stringResult ;
743770 final @ Nullable Object data ;
744771
745772 PendingOperation (
746773 @ NonNull String method ,
747774 @ Nullable Messages .Result <Messages .UserData > userDataResult ,
748- @ Nullable Messages .Result < Void > voidResult ,
775+ @ Nullable Messages .VoidResult voidResult ,
749776 @ Nullable Messages .Result <Boolean > boolResult ,
750777 @ Nullable Messages .Result <String > stringResult ,
751778 @ Nullable Object data ) {
@@ -764,7 +791,7 @@ private static class PendingOperation {
764791
765792 /** Clears the token kept in the client side cache. */
766793 @ Override
767- public void clearAuthCache (@ NonNull String token , @ NonNull Messages .Result < Void > result ) {
794+ public void clearAuthCache (@ NonNull String token , @ NonNull Messages .VoidResult result ) {
768795 Callable <Void > clearTokenTask =
769796 () -> {
770797 GoogleAuthUtil .clearToken (context , token );
@@ -775,7 +802,8 @@ public void clearAuthCache(@NonNull String token, @NonNull Messages.Result<Void>
775802 clearTokenTask ,
776803 clearTokenFuture -> {
777804 try {
778- result .success (clearTokenFuture .get ());
805+ clearTokenFuture .get ();
806+ result .success ();
779807 } catch (ExecutionException e ) {
780808 @ Nullable Throwable cause = e .getCause ();
781809 result .error (
0 commit comments