diff --git a/auth/src/main/java/com/firebase/ui/auth/util/data/ProviderUtils.java b/auth/src/main/java/com/firebase/ui/auth/util/data/ProviderUtils.java index 076e741d2..c1fc6515f 100644 --- a/auth/src/main/java/com/firebase/ui/auth/util/data/ProviderUtils.java +++ b/auth/src/main/java/com/firebase/ui/auth/util/data/ProviderUtils.java @@ -221,14 +221,29 @@ public Task> then(@NonNull Task task) { } // Reorder providers from most to least usable. Usability is determined by // how many steps a user needs to perform to log in. - maximizePriority(lastSignedInProviders, GoogleAuthProvider.PROVIDER_ID); + reorderPriorities(lastSignedInProviders); return Tasks.forResult(lastSignedInProviders); } - private void maximizePriority(List providers, String id) { + private void reorderPriorities(List providers) { + // Prioritize Google over everything else + // Prioritize email-password sign in second + // De-prioritize email link sign in + changePriority(providers, EmailAuthProvider.PROVIDER_ID, true); + changePriority(providers, GoogleAuthProvider.PROVIDER_ID, true); + changePriority(providers, EMAIL_LINK_PROVIDER, false); + } + + private void changePriority(List providers, + String id, + boolean maximizePriority) { if (providers.remove(id)) { - providers.add(0, id); + if (maximizePriority) { + providers.add(0, id); + } else { + providers.add(id); + } } } });