|
22 | 22 | import com.firebase.ui.auth.data.model.UserCancellationException;
|
23 | 23 | import com.firebase.ui.auth.ui.HelperActivityBase;
|
24 | 24 | import com.firebase.ui.auth.util.ExtraConstants;
|
| 25 | +import com.firebase.ui.auth.util.FirebaseAuthError; |
25 | 26 | import com.firebase.ui.auth.util.data.AuthOperationManager;
|
26 | 27 | import com.firebase.ui.auth.util.data.ProviderUtils;
|
27 | 28 | import com.firebase.ui.auth.viewmodel.ProviderSignInBase;
|
|
32 | 33 | import com.google.firebase.auth.AuthCredential;
|
33 | 34 | import com.google.firebase.auth.AuthResult;
|
34 | 35 | import com.google.firebase.auth.FirebaseAuth;
|
| 36 | +import com.google.firebase.auth.FirebaseAuthException; |
35 | 37 | import com.google.firebase.auth.FirebaseAuthUserCollisionException;
|
36 | 38 | import com.google.firebase.auth.FirebaseUser;
|
37 | 39 | import com.google.firebase.auth.OAuthCredential;
|
@@ -91,17 +93,27 @@ public void onSuccess(@NonNull AuthResult authResult) {
|
91 | 93 | new OnFailureListener() {
|
92 | 94 | @Override
|
93 | 95 | public void onFailure(@NonNull Exception e) {
|
94 |
| - if (e instanceof FirebaseAuthUserCollisionException) { |
95 |
| - FirebaseAuthUserCollisionException collisionException = |
96 |
| - (FirebaseAuthUserCollisionException) e; |
97 |
| - |
98 |
| - setResult(Resource.<IdpResponse>forFailure( |
99 |
| - new FirebaseUiUserCollisionException( |
100 |
| - ErrorCodes.ERROR_GENERIC_IDP_RECOVERABLE_ERROR, |
101 |
| - "Recoverable error.", |
102 |
| - provider.getProviderId(), |
103 |
| - collisionException.getEmail(), |
104 |
| - collisionException.getUpdatedCredential()))); |
| 96 | + if (e instanceof FirebaseAuthException) { |
| 97 | + FirebaseAuthError error = |
| 98 | + FirebaseAuthError.fromException((FirebaseAuthException) e); |
| 99 | + |
| 100 | + if (e instanceof FirebaseAuthUserCollisionException) { |
| 101 | + FirebaseAuthUserCollisionException collisionException = |
| 102 | + (FirebaseAuthUserCollisionException) e; |
| 103 | + |
| 104 | + setResult(Resource.<IdpResponse>forFailure( |
| 105 | + new FirebaseUiUserCollisionException( |
| 106 | + ErrorCodes.ERROR_GENERIC_IDP_RECOVERABLE_ERROR, |
| 107 | + "Recoverable error.", |
| 108 | + provider.getProviderId(), |
| 109 | + collisionException.getEmail(), |
| 110 | + collisionException.getUpdatedCredential()))); |
| 111 | + } else if (error == FirebaseAuthError.ERROR_WEB_CONTEXT_CANCELED) { |
| 112 | + setResult(Resource.<IdpResponse>forFailure( |
| 113 | + new UserCancellationException())); |
| 114 | + } else { |
| 115 | + setResult(Resource.<IdpResponse>forFailure(e)); |
| 116 | + } |
105 | 117 | } else {
|
106 | 118 | setResult(Resource.<IdpResponse>forFailure(e));
|
107 | 119 | }
|
|
0 commit comments