Skip to content

Commit 4b37fa2

Browse files
committed
Fix NPE when returning from anti-social providers
Signed-off-by: Alex Saveau <[email protected]>
1 parent 9d954e4 commit 4b37fa2

File tree

2 files changed

+16
-7
lines changed

2 files changed

+16
-7
lines changed

auth/src/main/java/com/firebase/ui/auth/ui/idp/AuthMethodPickerActivity.java

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -162,12 +162,22 @@ private void populateIdpList(List<IdpConfig> providerConfigs,
162162
this, R.string.fui_progress_dialog_loading) {
163163
@Override
164164
protected void onSuccess(@NonNull IdpResponse response) {
165-
handler.startSignIn(response);
165+
handleResponse(response);
166166
}
167167

168168
@Override
169169
protected void onFailure(@NonNull Exception e) {
170-
handler.startSignIn(IdpResponse.from(e));
170+
handleResponse(IdpResponse.from(e));
171+
}
172+
173+
private void handleResponse(@NonNull IdpResponse response) {
174+
if (!response.isSuccessful()
175+
|| AuthUI.SOCIAL_PROVIDERS.contains(response.getProviderType())) {
176+
handler.startSignIn(response);
177+
} else {
178+
finish(response.isSuccessful() ? RESULT_OK : RESULT_CANCELED,
179+
response.toIntent());
180+
}
171181
}
172182
});
173183

auth/src/main/java/com/firebase/ui/auth/viewmodel/idp/SocialProviderResponseHandler.java

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import android.support.annotation.Nullable;
88
import android.support.annotation.RestrictTo;
99

10+
import com.firebase.ui.auth.AuthUI;
1011
import com.firebase.ui.auth.ErrorCodes;
1112
import com.firebase.ui.auth.FirebaseUiException;
1213
import com.firebase.ui.auth.IdpResponse;
@@ -24,7 +25,6 @@
2425
import com.google.firebase.auth.AuthResult;
2526
import com.google.firebase.auth.EmailAuthProvider;
2627
import com.google.firebase.auth.FirebaseAuthUserCollisionException;
27-
import com.google.firebase.auth.PhoneAuthProvider;
2828

2929
@RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
3030
public class SocialProviderResponseHandler extends AuthViewModelBase<IdpResponse> {
@@ -37,10 +37,9 @@ public void startSignIn(@NonNull final IdpResponse response) {
3737
setResult(Resource.<IdpResponse>forFailure(response.getError()));
3838
return;
3939
}
40-
if (response.getProviderType().equals(EmailAuthProvider.PROVIDER_ID)
41-
|| response.getProviderType().equals(PhoneAuthProvider.PROVIDER_ID)) {
42-
setResult(Resource.forSuccess(response));
43-
return;
40+
if (!AuthUI.SOCIAL_PROVIDERS.contains(response.getProviderType())) {
41+
throw new IllegalStateException(
42+
"This handler cannot be used with email or phone providers");
4443
}
4544
setResult(Resource.<IdpResponse>forLoading());
4645

0 commit comments

Comments
 (0)