Skip to content

Commit 15fbed3

Browse files
committed
Oh boy, this should work
Signed-off-by: Alex Saveau <[email protected]>
1 parent 530e753 commit 15fbed3

File tree

2 files changed

+40
-26
lines changed

2 files changed

+40
-26
lines changed

auth/src/main/java/com/firebase/ui/auth/util/GoogleApiHelper.java

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
import com.google.android.gms.common.api.GoogleApiClient;
1010
import com.google.android.gms.common.api.Result;
1111
import com.google.android.gms.common.api.ResultCallback;
12-
import com.google.android.gms.tasks.OnFailureListener;
12+
import com.google.android.gms.tasks.OnCompleteListener;
1313
import com.google.android.gms.tasks.OnSuccessListener;
1414
import com.google.android.gms.tasks.Task;
1515
import com.google.android.gms.tasks.TaskCompletionSource;
@@ -68,16 +68,23 @@ public void onResult(@NonNull R result) {
6868
}
6969
}
7070

71-
protected abstract static class ExceptionForwarder<TResult> implements OnSuccessListener<TResult>, OnFailureListener {
71+
protected static class ExceptionForwarder<TResult> implements OnCompleteListener<TResult> {
7272
private TaskCompletionSource mSource;
73+
private OnSuccessListener<TResult> mListener;
7374

74-
public ExceptionForwarder(TaskCompletionSource source) {
75+
public ExceptionForwarder(TaskCompletionSource source,
76+
OnSuccessListener<TResult> listener) {
7577
mSource = source;
78+
mListener = listener;
7679
}
7780

7881
@Override
79-
public void onFailure(@NonNull Exception e) {
80-
mSource.setException(e);
82+
public void onComplete(@NonNull Task<TResult> task) {
83+
if (task.isSuccessful()) {
84+
mListener.onSuccess(task.getResult());
85+
} else {
86+
mSource.setException(task.getException());
87+
}
8188
}
8289
}
8390
}

auth/src/main/java/com/firebase/ui/auth/util/GoogleSignInHelper.java

Lines changed: 28 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import com.google.android.gms.auth.api.signin.GoogleSignInOptions;
99
import com.google.android.gms.common.api.GoogleApiClient;
1010
import com.google.android.gms.common.api.Status;
11+
import com.google.android.gms.tasks.OnSuccessListener;
1112
import com.google.android.gms.tasks.Task;
1213
import com.google.android.gms.tasks.TaskCompletionSource;
1314

@@ -25,39 +26,45 @@ public static GoogleSignInHelper getInstance(FragmentActivity activity) {
2526

2627
public Task<Status> signOut() {
2728
final TaskCompletionSource<Status> statusTask = new TaskCompletionSource<>();
28-
getConnectedApiTask().addOnSuccessListener(new ExceptionForwarder<Bundle>(statusTask) {
29-
@Override
30-
public void onSuccess(Bundle bundle) {
31-
Auth.GoogleSignInApi.signOut(mClient)
32-
.setResultCallback(new TaskResultCaptor<>(statusTask));
33-
}
34-
});
29+
getConnectedApiTask().addOnCompleteListener(new ExceptionForwarder<>(
30+
statusTask,
31+
new OnSuccessListener<Bundle>() {
32+
@Override
33+
public void onSuccess(Bundle status) {
34+
Auth.GoogleSignInApi.signOut(mClient)
35+
.setResultCallback(new TaskResultCaptor<>(statusTask));
36+
}
37+
}));
3538
return statusTask.getTask();
3639
}
3740

3841
@Override
3942
public Task<Status> disableAutoSignIn() {
4043
final TaskCompletionSource<Status> statusTask = new TaskCompletionSource<>();
41-
getConnectedApiTask().addOnSuccessListener(new ExceptionForwarder<Bundle>(statusTask) {
42-
@Override
43-
public void onSuccess(Bundle bundle) {
44-
Auth.CredentialsApi.disableAutoSignIn(mClient)
45-
.setResultCallback(new TaskResultCaptor<>(statusTask));
46-
}
47-
});
44+
getConnectedApiTask().addOnCompleteListener(new ExceptionForwarder<>(
45+
statusTask,
46+
new OnSuccessListener<Bundle>() {
47+
@Override
48+
public void onSuccess(Bundle status) {
49+
Auth.CredentialsApi.disableAutoSignIn(mClient)
50+
.setResultCallback(new TaskResultCaptor<>(statusTask));
51+
}
52+
}));
4853
return statusTask.getTask();
4954
}
5055

5156
@Override
5257
public Task<Status> delete(final Credential credential) {
5358
final TaskCompletionSource<Status> statusTask = new TaskCompletionSource<>();
54-
getConnectedApiTask().addOnSuccessListener(new ExceptionForwarder<Bundle>(statusTask) {
55-
@Override
56-
public void onSuccess(Bundle bundle) {
57-
Auth.CredentialsApi.delete(mClient, credential)
58-
.setResultCallback(new TaskResultCaptor<>(statusTask));
59-
}
60-
});
59+
getConnectedApiTask().addOnCompleteListener(new ExceptionForwarder<>(
60+
statusTask,
61+
new OnSuccessListener<Bundle>() {
62+
@Override
63+
public void onSuccess(Bundle status) {
64+
Auth.CredentialsApi.delete(mClient, credential)
65+
.setResultCallback(new TaskResultCaptor<>(statusTask));
66+
}
67+
}));
6168
return statusTask.getTask();
6269
}
6370
}

0 commit comments

Comments
 (0)