Skip to content

Commit

Permalink
Update UI to reflect changes in signInSilently and Smart Lock options…
Browse files Browse the repository at this point in the history
…. Add Credentials Manager checkbox.
  • Loading branch information
marinacoelho committed Aug 21, 2024
1 parent de3f6fe commit f87451d
Show file tree
Hide file tree
Showing 8 changed files with 31 additions and 85 deletions.
18 changes: 2 additions & 16 deletions app/src/main/java/com/firebase/uidemo/auth/AuthUiActivity.java
Original file line number Diff line number Diff line change
Expand Up @@ -141,8 +141,6 @@ public void onCreate(@Nullable Bundle savedInstanceState) {

mBinding.signIn.setOnClickListener(view -> signIn());

mBinding.signInSilent.setOnClickListener(view -> silentSignIn());

if (ConfigurationUtils.isGoogleMisconfigured(this)
|| ConfigurationUtils.isFacebookMisconfigured(this)) {
showSnackbar(R.string.configuration_required);
Expand Down Expand Up @@ -195,9 +193,8 @@ private Intent getSignInIntent(@Nullable String link) {
AuthUI.SignInIntentBuilder builder = getAuthUI().createSignInIntentBuilder()
.setTheme(getSelectedTheme())
.setLogo(getSelectedLogo())
.setAvailableProviders(getSelectedProviders())
.setIsSmartLockEnabled(mBinding.credentialSelectorEnabled.isChecked(),
mBinding.hintSelectorEnabled.isChecked());
.setAvailableProviders(getSelectedProviders());
//.setIsCredentialsManagerEnabled(mBinding.credentialsManagerEnabled.isChecked());

if (mBinding.customLayout.isChecked()) {
AuthMethodPickerLayout customLayout = new AuthMethodPickerLayout
Expand Down Expand Up @@ -229,17 +226,6 @@ private Intent getSignInIntent(@Nullable String link) {
return builder.build();
}

public void silentSignIn() {
getAuthUI().silentSignIn(this, getSelectedProviders())
.addOnCompleteListener(this, task -> {
if (task.isSuccessful()) {
startSignedInActivity(null);
} else {
showSnackbar(R.string.sign_in_failed);
}
});
}

@Override
protected void onResume() {
super.onResume();
Expand Down
22 changes: 4 additions & 18 deletions app/src/main/res/layout/auth_ui_layout.xml
Original file line number Diff line number Diff line change
Expand Up @@ -38,15 +38,6 @@
android:layout_marginTop="16dp"
android:text="@string/sign_in_start" />

<Button
android:id="@+id/sign_in_silent"
style="@style/Widget.MaterialComponents.Button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginBottom="16dp"
android:text="@string/sign_in_silent" />

<TextView
style="@style/TextAppearance.MaterialComponents.Subtitle1"
android:layout_width="wrap_content"
Expand Down Expand Up @@ -314,18 +305,13 @@
android:text="@string/options_header" />

<CheckBox
android:id="@+id/credential_selector_enabled"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked="true"
android:text="@string/options_enable_credential_selector" />

<CheckBox
android:id="@+id/hint_selector_enabled"
android:id="@+id/credentials_manager_enabled"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked="true"
android:text="@string/options_enable_hint_selector" />
android:text="@string/options_enable_credentials_manager"
android:visibility="gone"/>
<!-- TODO (hackathon) change visibility when we support CredMan -->

<CheckBox
android:id="@+id/allow_new_email_accounts"
Expand Down
4 changes: 1 addition & 3 deletions app/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,6 @@
<!-- Auth UI -->
<string name="launch_title">FirebaseUI Auth Demo</string>
<string name="sign_in_start">Start</string>
<string name="sign_in_silent">Sign in silently</string>

<string name="providers_header">Auth providers</string>
<string name="providers_google">Google</string>
Expand Down Expand Up @@ -63,8 +62,7 @@
<string name="facebook_permission_photos">Photos</string>

<string name="options_header">Other Options</string>
<string name="options_enable_credential_selector">Enable Smart Lock\'s credential selector</string>
<string name="options_enable_hint_selector">Enable Smart Lock\'s hint selector</string>
<string name="options_enable_credentials_manager">Enable Credentials Manager</string>
<string name="options_allow_new_email_acccount">Allow new account creation</string>
<string name="options_require_name">Require first/last name with email accounts.</string>
<string name="options_use_auth_emulator">Connect to auth emulator (localhost:9099).</string>
Expand Down
33 changes: 7 additions & 26 deletions auth/src/main/java/com/firebase/ui/auth/AuthUI.java
Original file line number Diff line number Diff line change
Expand Up @@ -1264,8 +1264,7 @@ private abstract class AuthIntentBuilder<T extends AuthIntentBuilder> {
String mPrivacyPolicyUrl;
boolean mAlwaysShowProviderChoice = false;
boolean mLockOrientation = false;
boolean mEnableCredentials = true;
boolean mEnableHints = true;
boolean mEnableCredentialsManager = true;
AuthMethodPickerLayout mAuthMethodPickerLayout = null;
ActionCodeSettings mPasswordSettings = null;

Expand Down Expand Up @@ -1390,32 +1389,15 @@ public T setDefaultProvider(@Nullable IdpConfig config) {
}

/**
* Enables or disables the use of Smart Lock for Passwords in the sign in flow. To
* (en)disable hint selector and credential selector independently use {@link
* #setIsSmartLockEnabled(boolean, boolean)}
* Enables or disables the use of Credentials Manager.
* <p>
* <p>SmartLock is enabled by default.
* <p>Credentials Manager is enabled by default.
*
* @param enabled enables smartlock's credential selector and hint selector
* @param enableCredentialsManager enables credential manager
*/
@NonNull
public T setIsSmartLockEnabled(boolean enabled) {
return setIsSmartLockEnabled(enabled, enabled);
}

/**
* Enables or disables the use of Smart Lock for Passwords credential selector and hint
* selector.
* <p>
* <p>Both selectors are enabled by default.
*
* @param enableCredentials enables credential selector before signup
* @param enableHints enable hint selector in respective signup screens
*/
@NonNull
public T setIsSmartLockEnabled(boolean enableCredentials, boolean enableHints) {
mEnableCredentials = enableCredentials;
mEnableHints = enableHints;
public T setIsCredentialsManagerEnabled(boolean enableCredentialsManager) {
mEnableCredentialsManager = enableCredentialsManager;
return (T) this;
}

Expand Down Expand Up @@ -1547,8 +1529,7 @@ protected FlowParameters getFlowParams() {
mLogo,
mTosUrl,
mPrivacyPolicyUrl,
mEnableCredentials,
mEnableHints,
mEnableCredentialsManager,
mEnableAnonymousUpgrade,
mAlwaysShowProviderChoice,
mLockOrientation,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -52,8 +52,7 @@ public FlowParameters createFromParcel(Parcel in) {
int logoId = in.readInt();
String termsOfServiceUrl = in.readString();
String privacyPolicyUrl = in.readString();
boolean enableCredentials = in.readInt() != 0;
boolean enableHints = in.readInt() != 0;
boolean enableCredentialsManager = in.readInt() != 0;
boolean enableAnonymousUpgrade = in.readInt() != 0;
boolean alwaysShowProviderChoice = in.readInt() != 0;
boolean lockOrientation = in.readInt() != 0;
Expand All @@ -69,8 +68,7 @@ public FlowParameters createFromParcel(Parcel in) {
logoId,
termsOfServiceUrl,
privacyPolicyUrl,
enableCredentials,
enableHints,
enableCredentialsManager,
enableAnonymousUpgrade,
alwaysShowProviderChoice,
lockOrientation,
Expand Down Expand Up @@ -112,8 +110,7 @@ public FlowParameters[] newArray(int size) {
@Nullable
public final ActionCodeSettings passwordResetSettings;

public final boolean enableCredentials;
public final boolean enableHints;
public final boolean enableCredentialsManager;
public final boolean enableAnonymousUpgrade;
public final boolean alwaysShowProviderChoice;
public final boolean lockOrientation;
Expand All @@ -130,7 +127,6 @@ public FlowParameters(
@Nullable String termsOfServiceUrl,
@Nullable String privacyPolicyUrl,
boolean enableCredentials,
boolean enableHints,
boolean enableAnonymousUpgrade,
boolean alwaysShowProviderChoice,
boolean lockOrientation,
Expand All @@ -145,8 +141,7 @@ public FlowParameters(
this.logoId = logoId;
this.termsOfServiceUrl = termsOfServiceUrl;
this.privacyPolicyUrl = privacyPolicyUrl;
this.enableCredentials = enableCredentials;
this.enableHints = enableHints;
this.enableCredentialsManager = enableCredentials;
this.enableAnonymousUpgrade = enableAnonymousUpgrade;
this.alwaysShowProviderChoice = alwaysShowProviderChoice;
this.lockOrientation = lockOrientation;
Expand All @@ -171,8 +166,7 @@ public void writeToParcel(Parcel dest, int flags) {
dest.writeInt(logoId);
dest.writeString(termsOfServiceUrl);
dest.writeString(privacyPolicyUrl);
dest.writeInt(enableCredentials ? 1 : 0);
dest.writeInt(enableHints ? 1 : 0);
dest.writeInt(enableCredentialsManager ? 1 : 0);
dest.writeInt(enableAnonymousUpgrade ? 1 : 0);
dest.writeInt(alwaysShowProviderChoice ? 1 : 0);
dest.writeInt(lockOrientation ? 1 : 0);
Expand Down Expand Up @@ -205,8 +199,7 @@ public boolean isAnonymousUpgradeEnabled() {
public boolean isPlayServicesRequired() {
// Play services only required for Google Sign In and the Credentials API
return isProviderEnabled(GoogleAuthProvider.PROVIDER_ID)
|| enableHints
|| enableCredentials;
|| enableCredentialsManager;
}

public boolean isProviderEnabled(@AuthUI.SupportedProvider String provider) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -90,9 +90,10 @@ public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceStat

ImeHelper.setImeOnDoneListener(mEmailEditText, this);

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O && getFlowParams().enableHints) {
mEmailEditText.setImportantForAutofill(View.IMPORTANT_FOR_AUTOFILL_NO);
}
// TODO(hackathon): figure out if we want to have autofill or not.
// if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O && getFlowParams().enableHints) {
// mEmailEditText.setImportantForAutofill(View.IMPORTANT_FOR_AUTOFILL_NO);
// }

mNextButton.setOnClickListener(this);

Expand Down Expand Up @@ -170,7 +171,7 @@ protected void onFailure(@NonNull Exception e) {
if (!TextUtils.isEmpty(email)) {
mEmailEditText.setText(email);
validateAndProceed();
} else if (getFlowParams().enableHints) {
} else if (getFlowParams().enableCredentialsManager) {
// TODO(hackathon): Fetch credential
// mHandler.fetchCredential();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -171,7 +171,7 @@ public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceStat
// Only show the name field if required
nameInput.setVisibility(requireName ? View.VISIBLE : View.GONE);

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O && getFlowParams().enableCredentials) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O && getFlowParams().enableCredentialsManager) {
mEmailEditText.setImportantForAutofill(View.IMPORTANT_FOR_AUTOFILL_NO);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -89,9 +89,10 @@ public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceStat

mSmsTermsText.setText(getString(R.string.fui_sms_terms_of_service,
getString(R.string.fui_verify_phone_number)));
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O && getFlowParams().enableHints) {
mPhoneEditText.setImportantForAutofill(View.IMPORTANT_FOR_AUTOFILL_NO);
}
// TODO(hackathon): figure out if we want to have autofill or not.
// if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O && getFlowParams().enableHints) {
// mPhoneEditText.setImportantForAutofill(View.IMPORTANT_FOR_AUTOFILL_NO);
// }
requireActivity().setTitle(getString(R.string.fui_verify_phone_number_title));

ImeHelper.setImeOnDoneListener(mPhoneEditText, () -> onNext());
Expand Down Expand Up @@ -234,7 +235,7 @@ private void setDefaultCountryForSpinner() {
"",
countryIso,
String.valueOf(PhoneNumberUtils.getCountryCode(countryIso))));
} else if (getFlowParams().enableHints) {
} else if (getFlowParams().enableCredentialsManager) {
// TODO(hackathon): fetch user credential
// mCheckPhoneHandler.fetchCredential();
}
Expand Down

0 comments on commit f87451d

Please sign in to comment.