diff --git a/auth/src/main/java/com/firebase/ui/auth/ui/idp/AuthMethodPickerActivity.java b/auth/src/main/java/com/firebase/ui/auth/ui/idp/AuthMethodPickerActivity.java index 5c467cae0..f6efa9e35 100644 --- a/auth/src/main/java/com/firebase/ui/auth/ui/idp/AuthMethodPickerActivity.java +++ b/auth/src/main/java/com/firebase/ui/auth/ui/idp/AuthMethodPickerActivity.java @@ -51,7 +51,6 @@ import com.google.firebase.auth.EmailAuthProvider; import com.google.firebase.auth.FacebookAuthProvider; import com.google.firebase.auth.FirebaseAuth; -import com.google.firebase.auth.GithubAuthProvider; import com.google.firebase.auth.GoogleAuthProvider; import com.google.firebase.auth.PhoneAuthProvider; @@ -229,14 +228,36 @@ private void populateIdpListCustomLayout(List providerConfigs) { for (IdpConfig idpConfig : providerConfigs) { final String providerId = providerOrEmailLinkProvider(idpConfig.getProviderId()); - if (!providerButtonIds.containsKey(providerId)) { + Integer buttonResId = providerButtonIds.get(providerId); + if (buttonResId == null) { throw new IllegalStateException("No button found for auth provider: " + idpConfig.getProviderId()); } - @IdRes int buttonId = providerButtonIds.get(providerId); + @IdRes int buttonId = buttonResId; View loginButton = findViewById(buttonId); handleSignInOperation(idpConfig, loginButton); } + //hide custom layout buttons that don't have their identity provider set + for (String providerBtnId : providerButtonIds.keySet()) { + if (providerBtnId == null) { + continue; + } + boolean hasProvider = false; + for (IdpConfig idpConfig : providerConfigs) { + if (providerBtnId.equals(idpConfig.getProviderId())) { + hasProvider = true; + break; + } + } + if (!hasProvider) { + Integer resId = providerButtonIds.get(providerBtnId); + if (resId == null) { + continue; + } + @IdRes int buttonId = resId; + findViewById(buttonId).setVisibility(View.GONE); + } + } } @NonNull