@@ -56,13 +56,13 @@ public void initInstance(
56
56
@ NonNull GoogleSignInWrapper googleSignInWrapper ) {
57
57
this .messenger = messenger ;
58
58
delegate = new Delegate (context , googleSignInWrapper );
59
- GoogleSignInApi .setup (messenger , delegate );
59
+ GoogleSignInApi .setUp (messenger , delegate );
60
60
}
61
61
62
62
private void dispose () {
63
63
delegate = null ;
64
64
if (messenger != null ) {
65
- GoogleSignInApi .setup (messenger , null );
65
+ GoogleSignInApi .setUp (messenger , null );
66
66
messenger = null ;
67
67
}
68
68
}
@@ -241,6 +241,30 @@ void requestScopes(
241
241
final @ NonNull MethodChannel .Result result , final @ NonNull List <String > scopes );
242
242
}
243
243
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
+
244
268
/**
245
269
* Helper class for supporting the legacy IDelegate interface based on raw method channels, which
246
270
* handles converting any FlutterErrors (or other {@code Throwable}s in case any non- FlutterError
@@ -296,13 +320,13 @@ public void success(Messages.UserData data) {
296
320
* Helper class for supporting the legacy IDelegate interface based on raw method channels, which
297
321
* handles converting responses from methods that return {@code Void}.
298
322
*/
299
- private static class VoidMethodChannelResult extends ErrorConvertingMethodChannelResult < Void > {
323
+ private static class VoidMethodChannelResult extends ErrorConvertingMethodChannelVoidResult {
300
324
public VoidMethodChannelResult (MethodChannel .Result result ) {
301
325
super (result );
302
326
}
303
327
304
328
@ Override
305
- public void success (Void unused ) {
329
+ public void success () {
306
330
result .success (null );
307
331
}
308
332
}
@@ -367,7 +391,7 @@ public void setActivity(@Nullable Activity activity) {
367
391
private void checkAndSetPendingOperation (
368
392
String method ,
369
393
Messages .Result <Messages .UserData > userDataResult ,
370
- Messages .Result < Void > voidResult ,
394
+ Messages .VoidResult voidResult ,
371
395
Messages .Result <Boolean > boolResult ,
372
396
Messages .Result <String > stringResult ,
373
397
Object data ) {
@@ -385,7 +409,7 @@ private void checkAndSetPendingSignInOperation(
385
409
}
386
410
387
411
private void checkAndSetPendingVoidOperation (
388
- String method , @ NonNull Messages .Result < Void > result ) {
412
+ String method , @ NonNull Messages .VoidResult result ) {
389
413
checkAndSetPendingOperation (method , null , result , null , null , null );
390
414
}
391
415
@@ -557,7 +581,7 @@ public void signIn(@NonNull MethodChannel.Result result) {
557
581
* sign back in.
558
582
*/
559
583
@ Override
560
- public void signOut (@ NonNull Messages .Result < Void > result ) {
584
+ public void signOut (@ NonNull Messages .VoidResult result ) {
561
585
checkAndSetPendingVoidOperation ("signOut" , result );
562
586
563
587
signInClient
@@ -580,7 +604,7 @@ public void signOut(@NonNull MethodChannel.Result result) {
580
604
581
605
/** Signs the user out, and revokes their credentials. */
582
606
@ Override
583
- public void disconnect (@ NonNull Messages .Result < Void > result ) {
607
+ public void disconnect (@ NonNull Messages .VoidResult result ) {
584
608
checkAndSetPendingVoidOperation ("disconnect" , result );
585
609
586
610
signInClient
@@ -705,7 +729,7 @@ private String errorCodeForStatus(int statusCode) {
705
729
}
706
730
707
731
private void finishWithSuccess () {
708
- Objects .requireNonNull (pendingOperation .voidResult ).success (null );
732
+ Objects .requireNonNull (pendingOperation .voidResult ).success ();
709
733
pendingOperation = null ;
710
734
}
711
735
@@ -720,32 +744,35 @@ private void finishWithUserData(Messages.UserData data) {
720
744
}
721
745
722
746
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 ));
730
750
} 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 ));
732
760
}
733
- Objects .requireNonNull (result ).error (new FlutterError (errorCode , errorMessage , null ));
734
761
pendingOperation = null ;
735
762
}
736
763
737
764
private static class PendingOperation {
738
765
final @ NonNull String method ;
739
766
final @ Nullable Messages .Result <Messages .UserData > userDataResult ;
740
- final @ Nullable Messages .Result < Void > voidResult ;
767
+ final @ Nullable Messages .VoidResult voidResult ;
741
768
final @ Nullable Messages .Result <Boolean > boolResult ;
742
769
final @ Nullable Messages .Result <String > stringResult ;
743
770
final @ Nullable Object data ;
744
771
745
772
PendingOperation (
746
773
@ NonNull String method ,
747
774
@ Nullable Messages .Result <Messages .UserData > userDataResult ,
748
- @ Nullable Messages .Result < Void > voidResult ,
775
+ @ Nullable Messages .VoidResult voidResult ,
749
776
@ Nullable Messages .Result <Boolean > boolResult ,
750
777
@ Nullable Messages .Result <String > stringResult ,
751
778
@ Nullable Object data ) {
@@ -764,7 +791,7 @@ private static class PendingOperation {
764
791
765
792
/** Clears the token kept in the client side cache. */
766
793
@ Override
767
- public void clearAuthCache (@ NonNull String token , @ NonNull Messages .Result < Void > result ) {
794
+ public void clearAuthCache (@ NonNull String token , @ NonNull Messages .VoidResult result ) {
768
795
Callable <Void > clearTokenTask =
769
796
() -> {
770
797
GoogleAuthUtil .clearToken (context , token );
@@ -775,7 +802,8 @@ public void clearAuthCache(@NonNull String token, @NonNull Messages.Result<Void>
775
802
clearTokenTask ,
776
803
clearTokenFuture -> {
777
804
try {
778
- result .success (clearTokenFuture .get ());
805
+ clearTokenFuture .get ();
806
+ result .success ();
779
807
} catch (ExecutionException e ) {
780
808
@ Nullable Throwable cause = e .getCause ();
781
809
result .error (
0 commit comments