Skip to content

Commit ae853e1

Browse files
author
Aaron Mandle
committed
Extract a common failure handler for tasks
Change-Id: Iaeb95cd54d11f633fec7b28af26a49f8079576fb
1 parent b605f0c commit ae853e1

11 files changed

+275
-233
lines changed

auth/src/main/java/com/firebase/ui/auth/ui/AcquireEmailHelper.java

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -52,20 +52,21 @@ public void checkAccountExists(final String email) {
5252
FirebaseAuth firebaseAuth = mActivityHelper.getFirebaseAuth();
5353
mActivityHelper.showLoadingDialog(R.string.progress_dialog_loading);
5454
if (email != null && !email.isEmpty()) {
55-
firebaseAuth.fetchProvidersForEmail(email).addOnCompleteListener(
56-
new OnCompleteListener<ProviderQueryResult>() {
57-
@Override
58-
public void onComplete(@NonNull Task<ProviderQueryResult> task) {
59-
if (task.isSuccessful()) {
60-
startEmailHandler(email, task.getResult().getProviders());
61-
} else {
62-
mActivityHelper.dismissDialog();
63-
Log.e(TAG, "Error fetching providers for email",
64-
task.getException());
65-
}
66-
}
67-
}
68-
);
55+
firebaseAuth
56+
.fetchProvidersForEmail(email)
57+
.addOnFailureListener(
58+
new TaskFailureLogger(TAG, "Error fetching providers for email"))
59+
.addOnCompleteListener(
60+
new OnCompleteListener<ProviderQueryResult>() {
61+
@Override
62+
public void onComplete(@NonNull Task<ProviderQueryResult> task) {
63+
if (task.isSuccessful()) {
64+
startEmailHandler(email, task.getResult().getProviders());
65+
} else {
66+
mActivityHelper.dismissDialog();
67+
}
68+
}
69+
});
6970
}
7071
}
7172

auth/src/main/java/com/firebase/ui/auth/ui/ChooseAccountActivity.java

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
import com.google.android.gms.auth.api.credentials.Credential;
3131
import com.google.android.gms.auth.api.credentials.IdentityProviders;
3232
import com.google.android.gms.tasks.OnCompleteListener;
33+
import com.google.android.gms.tasks.OnSuccessListener;
3334
import com.google.android.gms.tasks.Task;
3435
import com.google.firebase.auth.AuthResult;
3536
import com.google.firebase.auth.EmailAuthProvider;
@@ -96,16 +97,15 @@ public void onCredentialsApiConnected() {
9697
// TODO: (serikb) authenticate Firebase user and continue to application
9798
if (password != null && !password.isEmpty()) {
9899
// login with username/password
99-
mActivityHelper.getFirebaseAuth().signInWithEmailAndPassword(email, password)
100-
.addOnCompleteListener(new OnCompleteListener<AuthResult>() {
100+
mActivityHelper
101+
.getFirebaseAuth()
102+
.signInWithEmailAndPassword(email, password)
103+
.addOnFailureListener(new TaskFailureLogger(
104+
TAG, "Unsuccessful sign in with email and password"))
105+
.addOnSuccessListener(new OnSuccessListener<AuthResult>() {
101106
@Override
102-
public void onComplete(@NonNull Task<AuthResult> task) {
103-
if (task.isSuccessful()) {
104-
finish(Activity.RESULT_OK, new Intent());
105-
} else {
106-
Log.e(TAG, "Unsuccessful sign in with email and password",
107-
task.getException());
108-
}
107+
public void onSuccess(AuthResult authResult) {
108+
finish(Activity.RESULT_OK, new Intent());
109109
}
110110
});
111111
} else {
@@ -152,6 +152,8 @@ private void logInWithCredential(
152152
if (password != null && !password.isEmpty()) {
153153
// email/password combination
154154
mActivityHelper.getFirebaseAuth().signInWithEmailAndPassword(email, password)
155+
.addOnFailureListener(new TaskFailureLogger(
156+
TAG, "Error signing in with email and password"))
155157
.addOnCompleteListener(new OnCompleteListener<AuthResult>() {
156158
@Override
157159
public void onComplete(@NonNull Task<AuthResult> task) {
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
/*
2+
* Copyright 2016 Google Inc. All Rights Reserved.
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
5+
* in compliance with the License. You may obtain a copy of the License at
6+
*
7+
* http://www.apache.org/licenses/LICENSE-2.0
8+
*
9+
* Unless required by applicable law or agreed to in writing, software distributed under the
10+
* License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
11+
* express or implied. See the License for the specific language governing permissions and
12+
* limitations under the License.
13+
*/
14+
15+
package com.firebase.ui.auth.ui;
16+
17+
import android.support.annotation.NonNull;
18+
import android.util.Log;
19+
20+
import com.google.android.gms.tasks.OnFailureListener;
21+
22+
public class TaskFailureLogger implements OnFailureListener {
23+
private String mTag;
24+
private String mMessage;
25+
26+
public TaskFailureLogger(String tag, String message) {
27+
mTag = tag;
28+
mMessage = message;
29+
}
30+
31+
@Override
32+
public void onFailure(@NonNull Exception e) {
33+
Log.w(mTag, mMessage, e);
34+
}
35+
}

auth/src/main/java/com/firebase/ui/auth/ui/account_link/AccountLinkInitActivity.java

Lines changed: 69 additions & 75 deletions
Original file line numberDiff line numberDiff line change
@@ -18,17 +18,16 @@
1818
import android.content.Intent;
1919
import android.os.Bundle;
2020
import android.support.annotation.NonNull;
21-
import android.util.Log;
2221

2322
import com.firebase.ui.auth.R;
2423
import com.firebase.ui.auth.provider.IDPResponse;
2524
import com.firebase.ui.auth.ui.ActivityHelper;
2625
import com.firebase.ui.auth.ui.AppCompatBase;
2726
import com.firebase.ui.auth.ui.ExtraConstants;
2827
import com.firebase.ui.auth.ui.FlowParameters;
28+
import com.firebase.ui.auth.ui.TaskFailureLogger;
2929
import com.firebase.ui.auth.util.FirebaseAuthWrapper;
3030
import com.firebase.ui.auth.util.FirebaseAuthWrapperFactory;
31-
import com.google.android.gms.tasks.OnFailureListener;
3231
import com.google.android.gms.tasks.OnSuccessListener;
3332
import com.google.android.gms.tasks.Task;
3433
import com.google.firebase.auth.EmailAuthProvider;
@@ -82,84 +81,79 @@ void next(final String email, final String password, final String provider) {
8281
FirebaseAuth firebaseAuth = mActivityHelper.getFirebaseAuth();
8382
Task<ProviderQueryResult> providerQueryResultTask
8483
= firebaseAuth.fetchProvidersForEmail(email);
85-
providerQueryResultTask.addOnSuccessListener(
86-
new OnSuccessListener<ProviderQueryResult>() {
87-
@Override
88-
public void onSuccess(@NonNull ProviderQueryResult result) {
89-
mActivityHelper.dismissDialog();
90-
List<String> providers = result.getProviders();
91-
if (providers.size() == 0) {
92-
// new account for this email
93-
startActivityForResult(SaveCredentialsActivity.createIntent(
94-
getApplicationContext(),
95-
mActivityHelper.flowParams,
96-
null,
97-
email,
98-
password,
99-
provider,
100-
null), RC_SAVE_CREDENTIALS);
101-
} else if (providers.size() == 1) {
102-
if (providers.get(0).equals(provider)) {
103-
// existing account but has this IDP linked
104-
startActivityForResult(SaveCredentialsActivity.createIntent(
105-
AccountLinkInitActivity.this,
106-
mActivityHelper.flowParams,
107-
null,
108-
email,
109-
password,
110-
provider,
111-
null),
112-
RC_SAVE_CREDENTIALS);
113-
} else {
114-
if (providers.get(0).equals(EmailAuthProvider.PROVIDER_ID)) {
115-
startActivityForResult(WelcomeBackPasswordPrompt.createIntent(
116-
getApplicationContext(),
117-
mActivityHelper.flowParams,
118-
mIdpResponse),
119-
RC_WELCOME_BACK_PASSWORD_PROMPT);
120-
} else {
121-
// existing account but has a different IDP linked
122-
startActivityForResult(WelcomeBackIDPPrompt.createIntent(
84+
providerQueryResultTask
85+
.addOnFailureListener(new TaskFailureLogger(TAG, "Error querying providers"))
86+
.addOnSuccessListener(new OnSuccessListener<ProviderQueryResult>() {
87+
@Override
88+
public void onSuccess(@NonNull ProviderQueryResult result) {
89+
mActivityHelper.dismissDialog();
90+
List<String> providers = result.getProviders();
91+
if (providers.size() == 0) {
92+
// new account for this email
93+
startActivityForResult(SaveCredentialsActivity.createIntent(
12394
getApplicationContext(),
12495
mActivityHelper.flowParams,
96+
null,
97+
email,
98+
password,
12599
provider,
126-
mIdpResponse,
127-
email),
128-
RC_WELCOME_BACK_IDP_PROMPT
129-
);
100+
null), RC_SAVE_CREDENTIALS);
101+
} else if (providers.size() == 1) {
102+
if (providers.get(0).equals(provider)) {
103+
// existing account but has this IDP linked
104+
startActivityForResult(SaveCredentialsActivity.createIntent(
105+
AccountLinkInitActivity.this,
106+
mActivityHelper.flowParams,
107+
null,
108+
email,
109+
password,
110+
provider,
111+
null),
112+
RC_SAVE_CREDENTIALS);
113+
} else {
114+
if (providers.get(0).equals(EmailAuthProvider.PROVIDER_ID)) {
115+
startActivityForResult(WelcomeBackPasswordPrompt.createIntent(
116+
getApplicationContext(),
117+
mActivityHelper.flowParams,
118+
mIdpResponse),
119+
RC_WELCOME_BACK_PASSWORD_PROMPT);
120+
} else {
121+
// existing account but has a different IDP linked
122+
startActivityForResult(WelcomeBackIDPPrompt.createIntent(
123+
getApplicationContext(),
124+
mActivityHelper.flowParams,
125+
provider,
126+
mIdpResponse,
127+
email),
128+
RC_WELCOME_BACK_IDP_PROMPT
129+
);
130+
}
131+
}
132+
} else {
133+
// more than one providers
134+
if (providers.contains(provider)) {
135+
// this provider is already linked
136+
startActivityForResult(SaveCredentialsActivity.createIntent(
137+
AccountLinkInitActivity.this,
138+
mActivityHelper.flowParams,
139+
null,
140+
email,
141+
password,
142+
provider,
143+
null),
144+
RC_SAVE_CREDENTIALS);
145+
} else {
146+
startActivityForResult(WelcomeBackIDPPrompt.createIntent(
147+
getApplicationContext(),
148+
mActivityHelper.flowParams,
149+
provider,
150+
mIdpResponse,
151+
email),
152+
RC_WELCOME_BACK_IDP_PROMPT);
153+
}
130154
}
131155
}
132-
} else {
133-
// more than one providers
134-
if (providers.contains(provider)) {
135-
// this provider is already linked
136-
startActivityForResult(SaveCredentialsActivity.createIntent(
137-
AccountLinkInitActivity.this,
138-
mActivityHelper.flowParams,
139-
null,
140-
email,
141-
password,
142-
provider,
143-
null),
144-
RC_SAVE_CREDENTIALS);
145-
} else {
146-
startActivityForResult(WelcomeBackIDPPrompt.createIntent(
147-
getApplicationContext(),
148-
mActivityHelper.flowParams,
149-
provider,
150-
mIdpResponse,
151-
email),
152-
RC_WELCOME_BACK_IDP_PROMPT);
153-
}
154-
}
155-
}
156-
})
157-
.addOnFailureListener(new OnFailureListener() {
158-
@Override
159-
public void onFailure(@NonNull Exception e) {
160-
Log.e(TAG, "Error querying providers", e);
161-
}
162-
});
156+
});
163157
}
164158

165159
public static Intent createIntent(

auth/src/main/java/com/firebase/ui/auth/ui/account_link/WelcomeBackIDPPrompt.java

Lines changed: 20 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535
import com.firebase.ui.auth.ui.AuthCredentialHelper;
3636
import com.firebase.ui.auth.ui.ExtraConstants;
3737
import com.firebase.ui.auth.ui.FlowParameters;
38+
import com.firebase.ui.auth.ui.TaskFailureLogger;
3839
import com.google.android.gms.tasks.OnCompleteListener;
3940
import com.google.android.gms.tasks.Task;
4041
import com.google.firebase.auth.AuthCredential;
@@ -164,39 +165,25 @@ public void onComplete(@NonNull Task<AuthResult> task) {
164165
FirebaseUser firebaseUser = task.getResult().getUser();
165166
firebaseUser.linkWithCredential(mPrevCredential);
166167
firebaseAuth.signOut();
167-
firebaseAuth.signInWithCredential(mPrevCredential).addOnCompleteListener(
168-
new OnCompleteListener<AuthResult>() {
169-
@Override
170-
public void onComplete(@NonNull Task<AuthResult> task) {
171-
mActivityHelper.dismissDialog();
172-
if (!task.isSuccessful()) {
173-
Log.e(TAG,
174-
"Error signing in with credential",
175-
task.getException());
176-
}
177-
finish(Activity.RESULT_OK, new Intent());
178-
}
179-
}
180-
);
168+
firebaseAuth
169+
.signInWithCredential(mPrevCredential)
170+
.addOnFailureListener(new TaskFailureLogger(
171+
TAG, "Error signing in with previous credential"))
172+
.addOnCompleteListener(new FinishListener());
181173
} else {
182174
mActivityHelper.dismissDialog();
183175
finish(Activity.RESULT_OK, new Intent());
184176
}
185177
}
186-
});
178+
}).addOnFailureListener(
179+
new TaskFailureLogger(TAG, "Error signing in with new credential"));
187180

188181
} else {
189182
Task<AuthResult> authResultTask = currentUser.linkWithCredential(newCredential);
190-
authResultTask.addOnCompleteListener(new OnCompleteListener<AuthResult>() {
191-
@Override
192-
public void onComplete(@NonNull Task<AuthResult> task) {
193-
mActivityHelper.dismissDialog();
194-
if (!task.isSuccessful()) {
195-
Log.e(TAG, "Error linking with credential", task.getException());
196-
}
197-
finish(Activity.RESULT_OK, new Intent());
198-
}
199-
});
183+
authResultTask
184+
.addOnFailureListener(
185+
new TaskFailureLogger(TAG, "Error linking with credential"))
186+
.addOnCompleteListener(new FinishListener());
200187
}
201188
}
202189

@@ -211,4 +198,12 @@ public static Intent createIntent(
211198
.putExtra(ExtraConstants.EXTRA_IDP_RESPONSE, idpResponse)
212199
.putExtra(ExtraConstants.EXTRA_EMAIL, email);
213200
}
201+
202+
private class FinishListener implements OnCompleteListener {
203+
@Override
204+
public void onComplete(@NonNull Task task) {
205+
mActivityHelper.dismissDialog();
206+
finish(Activity.RESULT_OK, new Intent());
207+
}
208+
}
214209
}

0 commit comments

Comments
 (0)