Skip to content

Commit 0e3400d

Browse files
committed
Forward exceptions
Signed-off-by: Alex Saveau <[email protected]>
1 parent 26a3aea commit 0e3400d

File tree

3 files changed

+23
-9
lines changed

3 files changed

+23
-9
lines changed

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

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -85,20 +85,20 @@ public void onResult(@NonNull Status status) {
8585
});
8686
}
8787

88-
private abstract static class ExceptionForwardingContinuation<InT, OutT>
89-
implements Continuation<InT, Task<OutT>> {
88+
private abstract static class ExceptionForwardingContinuation<TIn, TOut>
89+
implements Continuation<TIn, Task<TOut>> {
9090

9191
@Override
92-
public final Task<OutT> then(@NonNull Task<InT> task) throws Exception {
93-
TaskCompletionSource<OutT> source = new TaskCompletionSource<>();
92+
public final Task<TOut> then(@NonNull Task<TIn> task) throws Exception {
93+
TaskCompletionSource<TOut> source = new TaskCompletionSource<>();
9494
// calling task.getResult() will implicitly re-throw the exception of the original
9595
// task, which will be returned as the result for the output task. Similarly,
9696
// if process() throws an exception, this will be turned into the task result.
9797
process(task.getResult(), source);
9898
return source.getTask();
9999
}
100100

101-
protected abstract void process(InT in, TaskCompletionSource<OutT> result);
101+
protected abstract void process(TIn in, TaskCompletionSource<TOut> result);
102102
}
103103

104104
private static final class TaskResultCaptor<R extends Result> implements ResultCallback<R> {

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

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@
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;
13+
import com.google.android.gms.tasks.OnSuccessListener;
1214
import com.google.android.gms.tasks.Task;
1315
import com.google.android.gms.tasks.TaskCompletionSource;
1416

@@ -65,4 +67,17 @@ public void onResult(@NonNull R result) {
6567
mSource.setResult(result);
6668
}
6769
}
70+
71+
protected static abstract class ExceptionForwarder<TResult> implements OnSuccessListener<TResult>, OnFailureListener {
72+
private TaskCompletionSource mSource;
73+
74+
public ExceptionForwarder(TaskCompletionSource source) {
75+
mSource = source;
76+
}
77+
78+
@Override
79+
public void onFailure(@NonNull Exception e) {
80+
mSource.setException(e);
81+
}
82+
}
6883
}

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

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
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;
1211
import com.google.android.gms.tasks.Task;
1312
import com.google.android.gms.tasks.TaskCompletionSource;
1413

@@ -26,7 +25,7 @@ public static GoogleSignInHelper getInstance(FragmentActivity activity) {
2625

2726
public Task<Status> signOut() {
2827
final TaskCompletionSource<Status> statusTask = new TaskCompletionSource<>();
29-
getConnectedApiTask().addOnSuccessListener(new OnSuccessListener<Bundle>() {
28+
getConnectedApiTask().addOnSuccessListener(new ExceptionForwarder<Bundle>(statusTask) {
3029
@Override
3130
public void onSuccess(Bundle bundle) {
3231
Auth.GoogleSignInApi.signOut(mClient)
@@ -39,7 +38,7 @@ public void onSuccess(Bundle bundle) {
3938
@Override
4039
public Task<Status> disableAutoSignIn() {
4140
final TaskCompletionSource<Status> statusTask = new TaskCompletionSource<>();
42-
getConnectedApiTask().addOnSuccessListener(new OnSuccessListener<Bundle>() {
41+
getConnectedApiTask().addOnSuccessListener(new ExceptionForwarder<Bundle>(statusTask) {
4342
@Override
4443
public void onSuccess(Bundle bundle) {
4544
Auth.CredentialsApi.disableAutoSignIn(mClient)
@@ -52,7 +51,7 @@ public void onSuccess(Bundle bundle) {
5251
@Override
5352
public Task<Status> delete(final Credential credential) {
5453
final TaskCompletionSource<Status> statusTask = new TaskCompletionSource<>();
55-
getConnectedApiTask().addOnSuccessListener(new OnSuccessListener<Bundle>() {
54+
getConnectedApiTask().addOnSuccessListener(new ExceptionForwarder<Bundle>(statusTask) {
5655
@Override
5756
public void onSuccess(Bundle bundle) {
5857
Auth.CredentialsApi.delete(mClient, credential)

0 commit comments

Comments
 (0)