Skip to content

Commit 6ad03e7

Browse files
committed
Introducing additional parameters for smart lock
Revert changes introduced in cred picker to support phone auth in commit a626685 Change-Id: I265be2d294218579d177c1d39b44fd6181f88767
1 parent bc672c4 commit 6ad03e7

File tree

14 files changed

+101
-111
lines changed

14 files changed

+101
-111
lines changed

app/src/main/java/com/firebase/uidemo/auth/AuthUiActivity.java

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -102,8 +102,11 @@ public class AuthUiActivity extends AppCompatActivity {
102102
@BindView(R.id.no_logo)
103103
RadioButton mNoLogo;
104104

105-
@BindView(R.id.smartlock_enabled)
106-
CheckBox mEnableSmartLock;
105+
@BindView(R.id.credential_selector_enabled)
106+
CheckBox mEnableCredentialSelector;
107+
108+
@BindView(R.id.hint_selector_enabled)
109+
CheckBox mEnableHintSelector;
107110

108111
@BindView(R.id.allow_new_email_accounts)
109112
CheckBox mAllowNewEmailAccounts;
@@ -188,7 +191,8 @@ public void signIn(View view) {
188191
.setLogo(getSelectedLogo())
189192
.setAvailableProviders(getSelectedProviders())
190193
.setTosUrl(getSelectedTosUrl())
191-
.setIsSmartLockEnabled(mEnableSmartLock.isChecked())
194+
.setIsSmartLockEnabled(mEnableCredentialSelector.isChecked(),
195+
mEnableHintSelector.isChecked())
192196
.setAllowNewEmailAccounts(mAllowNewEmailAccounts.isChecked())
193197
.build(),
194198
RC_SIGN_IN);
@@ -246,7 +250,8 @@ private void startSignedInActivity(IdpResponse response) {
246250
getSelectedTheme(),
247251
getSelectedProviders(),
248252
getSelectedTosUrl(),
249-
mEnableSmartLock.isChecked())));
253+
mEnableCredentialSelector.isChecked(),
254+
mEnableHintSelector.isChecked())));
250255
}
251256

252257
@MainThread

app/src/main/java/com/firebase/uidemo/auth/SignedInActivity.java

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,8 @@ public void reauthenticate() {
122122
Intent reauthIntent = AuthUI.getInstance()
123123
.createReauthIntentBuilder()
124124
.setAvailableProviders(mSignedInConfig.providerInfo)
125-
.setIsSmartLockEnabled(mSignedInConfig.isSmartLockEnabled)
125+
.setIsSmartLockEnabled(mSignedInConfig.isCredentialSelectorEnabled,
126+
mSignedInConfig.isHintSelectorEnabled)
126127
.setLogo(mSignedInConfig.logo)
127128
.setTheme(mSignedInConfig.theme)
128129
.setTosUrl(mSignedInConfig.tosUrl)
@@ -245,18 +246,21 @@ static final class SignedInConfig implements Parcelable {
245246
int theme;
246247
List<IdpConfig> providerInfo;
247248
String tosUrl;
248-
boolean isSmartLockEnabled;
249+
boolean isCredentialSelectorEnabled;
250+
boolean isHintSelectorEnabled;
249251

250252
SignedInConfig(int logo,
251253
int theme,
252254
List<IdpConfig> providerInfo,
253255
String tosUrl,
254-
boolean isSmartLockEnabled) {
256+
boolean isCredentialSelectorEnabled,
257+
boolean isHintSelectorEnabled) {
255258
this.logo = logo;
256259
this.theme = theme;
257260
this.providerInfo = providerInfo;
258261
this.tosUrl = tosUrl;
259-
this.isSmartLockEnabled = isSmartLockEnabled;
262+
this.isCredentialSelectorEnabled = isCredentialSelectorEnabled;
263+
this.isHintSelectorEnabled = isHintSelectorEnabled;
260264
}
261265

262266
SignedInConfig(Parcel in) {
@@ -265,7 +269,8 @@ static final class SignedInConfig implements Parcelable {
265269
providerInfo = new ArrayList<>();
266270
in.readList(providerInfo, IdpConfig.class.getClassLoader());
267271
tosUrl = in.readString();
268-
isSmartLockEnabled = in.readInt() != 0;
272+
isCredentialSelectorEnabled = in.readInt() != 0;
273+
isHintSelectorEnabled = in.readInt() != 0;
269274
}
270275

271276
public static final Creator<SignedInConfig> CREATOR = new Creator<SignedInConfig>() {
@@ -291,7 +296,8 @@ public void writeToParcel(Parcel dest, int flags) {
291296
dest.writeInt(theme);
292297
dest.writeList(providerInfo);
293298
dest.writeString(tosUrl);
294-
dest.writeInt(isSmartLockEnabled ? 1 : 0);
299+
dest.writeInt(isCredentialSelectorEnabled ? 1 : 0);
300+
dest.writeInt(isHintSelectorEnabled ? 1 : 0);
295301
}
296302
}
297303

app/src/main/res/layout/auth_ui_layout.xml

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -236,11 +236,18 @@
236236
android:text="@string/other_options_header"/>
237237

238238
<CheckBox
239-
android:id="@+id/smartlock_enabled"
239+
android:id="@+id/credential_selector_enabled"
240240
android:layout_width="wrap_content"
241241
android:layout_height="wrap_content"
242242
android:checked="true"
243-
android:text="@string/enable_smartlock"/>
243+
android:text="@string/enable_credential_selector"/>
244+
245+
<CheckBox
246+
android:id="@+id/hint_selector_enabled"
247+
android:layout_width="wrap_content"
248+
android:layout_height="wrap_content"
249+
android:checked="true"
250+
android:text="@string/enable_hint_selector"/>
244251

245252
<CheckBox
246253
android:id="@+id/allow_new_email_accounts"

app/src/main/res/values/strings.xml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,6 @@
4747
<string name="default_theme">Default theme</string>
4848
<string name="configuration_required">Configuration is required - see README.md</string>
4949
<string name="other_options_header">Other Options:</string>
50-
<string name="enable_smartlock">Enable SmartLock for Passwords</string>
5150
<string name="rational_image_perm">This sample will read an image from local storage to upload to Cloud Storage.</string>
5251
<string name="anonymous_auth_failed_msg">Anonymous authentication failed, various components of the demo will not work. Make sure your device is online and that Anonymous Auth is configured in your Firebase project(https://console.firebase.google.com/project/_/authentication/providers)</string>
5352
<string name="extra_google_scopes">Example extra Google scopes</string>
@@ -71,4 +70,6 @@
7170
<!-- strings for database demo activities -->
7271
<string name="start_chatting">No messages. Start chatting at the bottom!</string>
7372
<string name="signed_in">Signed In</string>
73+
<string name="enable_credential_selector">Enable Smart Lock\'s credential selector</string>
74+
<string name="enable_hint_selector">Enable Smart Lock\'s hint selector</string>
7475
</resources>

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

Lines changed: 27 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -456,7 +456,8 @@ private abstract class AuthIntentBuilder<T extends AuthIntentBuilder> {
456456
int mTheme = getDefaultTheme();
457457
List<IdpConfig> mProviders = new ArrayList<>();
458458
String mTosUrl;
459-
boolean mIsSmartLockEnabled = true;
459+
boolean mEnableCredentials = true;
460+
boolean mEnableHints = true;
460461

461462
private AuthIntentBuilder() {}
462463

@@ -580,11 +581,31 @@ private boolean isIdpAlreadyConfigured(@NonNull String providerId) {
580581

581582
/**
582583
* Enables or disables the use of Smart Lock for Passwords in the sign in flow.
584+
* To (en)disable hint selector and credential selector independently
585+
* use {@link #setIsSmartLockEnabled(boolean, boolean)}
583586
* <p>
584587
* <p>SmartLock is enabled by default.
588+
*
589+
* @param enabled enables smartlock's credential selector and hint selector
585590
*/
586591
public T setIsSmartLockEnabled(boolean enabled) {
587-
mIsSmartLockEnabled = enabled;
592+
setIsSmartLockEnabled(enabled, enabled);
593+
return (T) this;
594+
}
595+
596+
/**
597+
* Enables or disables the use of Smart Lock for Passwords credential selector and hint
598+
* selector.
599+
* <p>
600+
* <p>Both selectors are enabled by default.
601+
602+
* @param enableCredentials enables credential selector before signup
603+
* @param enableHints enable hint selector in respective signup screens
604+
* @return
605+
*/
606+
public T setIsSmartLockEnabled(boolean enableCredentials, boolean enableHints) {
607+
mEnableCredentials = enableCredentials;
608+
mEnableHints = enableHints;
588609
return (T) this;
589610
}
590611

@@ -638,7 +659,8 @@ protected FlowParameters getFlowParams() {
638659
mTheme,
639660
mLogo,
640661
mTosUrl,
641-
mIsSmartLockEnabled,
662+
mEnableCredentials,
663+
mEnableHints,
642664
false,
643665
true,
644666
mReauthReason);
@@ -673,7 +695,8 @@ protected FlowParameters getFlowParams() {
673695
mTheme,
674696
mLogo,
675697
mTosUrl,
676-
mIsSmartLockEnabled,
698+
mEnableCredentials,
699+
mEnableHints,
677700
mAllowNewEmailAccounts,
678701
false,
679702
null);

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

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -48,21 +48,23 @@ public class FlowParameters implements Parcelable {
4848
@Nullable
4949
public final String termsOfServiceUrl;
5050

51-
public final boolean smartLockEnabled;
52-
5351
public final boolean allowNewEmailAccounts;
5452

5553
@Nullable
5654
public final String reauthReason;
5755
public final boolean isReauth;
5856

57+
public final boolean enableCredentials;
58+
public final boolean enableHints;
59+
5960
public FlowParameters(
6061
@NonNull String appName,
6162
@NonNull List<IdpConfig> providerInfo,
6263
@StyleRes int themeId,
6364
@DrawableRes int logoId,
6465
@Nullable String termsOfServiceUrl,
65-
boolean smartLockEnabled,
66+
boolean enableCredentials,
67+
boolean enableHints,
6668
boolean allowNewEmailAccounts,
6769
boolean isReauth,
6870
String reauthReason) {
@@ -72,7 +74,8 @@ public FlowParameters(
7274
this.themeId = themeId;
7375
this.logoId = logoId;
7476
this.termsOfServiceUrl = termsOfServiceUrl;
75-
this.smartLockEnabled = smartLockEnabled;
77+
this.enableCredentials = enableCredentials;
78+
this.enableHints = enableHints;
7679
this.allowNewEmailAccounts = allowNewEmailAccounts;
7780
this.isReauth = isReauth;
7881
this.reauthReason = reauthReason;
@@ -85,7 +88,8 @@ public void writeToParcel(Parcel dest, int flags) {
8588
dest.writeInt(themeId);
8689
dest.writeInt(logoId);
8790
dest.writeString(termsOfServiceUrl);
88-
dest.writeInt(smartLockEnabled ? 1 : 0);
91+
dest.writeInt(enableCredentials ? 1 : 0);
92+
dest.writeInt(enableHints ? 1 : 0);
8993
dest.writeInt(allowNewEmailAccounts ? 1 : 0);
9094
dest.writeInt(isReauth ? 1 : 0);
9195
dest.writeString(reauthReason);
@@ -104,7 +108,8 @@ public FlowParameters createFromParcel(Parcel in) {
104108
int themeId = in.readInt();
105109
int logoId = in.readInt();
106110
String termsOfServiceUrl = in.readString();
107-
boolean smartLockEnabled = in.readInt() != 0;
111+
boolean enableCredentials = in.readInt() != 0;
112+
boolean enableHints = in.readInt() != 0;
108113
boolean allowNewEmailAccounts = in.readInt() != 0;
109114
boolean isReauth = in.readInt() != 0;
110115
String reauthReason = in.readString();
@@ -115,7 +120,8 @@ public FlowParameters createFromParcel(Parcel in) {
115120
themeId,
116121
logoId,
117122
termsOfServiceUrl,
118-
smartLockEnabled,
123+
enableCredentials,
124+
enableHints,
119125
allowNewEmailAccounts,
120126
isReauth,
121127
reauthReason);

auth/src/main/java/com/firebase/ui/auth/ui/email/CheckEmailFragment.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,7 @@ public void onActivityCreated(@Nullable Bundle savedInstanceState) {
133133
// Use email passed in
134134
mEmailEditText.setText(email);
135135
validateAndProceed();
136-
} else if (mHelper.getFlowParams().smartLockEnabled) {
136+
} else if (mHelper.getFlowParams().enableHints) {
137137
// Try SmartLock email autocomplete hint
138138
showEmailAutoCompleteHint();
139139
}

auth/src/main/java/com/firebase/ui/auth/ui/phone/PhoneVerificationActivity.java

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929

3030
import com.firebase.ui.auth.IdpResponse;
3131
import com.firebase.ui.auth.R;
32+
import com.firebase.ui.auth.ResultCodes;
3233
import com.firebase.ui.auth.ui.AppCompatBase;
3334
import com.firebase.ui.auth.ui.BaseHelper;
3435
import com.firebase.ui.auth.ui.ExtraConstants;
@@ -115,12 +116,12 @@ protected void onStart() {
115116
// 4) VERIFIED
116117
// For the first three cases, we can simply resubscribe to the
117118
// OnVerificationStateChangedCallbacks
118-
// For 4, we simply finish the activity after saving to smartlock
119+
// For 4, we simply finish the activity
119120
if (mVerificationState.equals(VerificationState.VERIFICATION_STARTED)) {
120121
sendCode(mPhoneNumber, false);
121122
} else if (mVerificationState == VerificationState.VERIFIED) {
122123
// activity was recreated when verified dialog was displayed
123-
saveCredentialsOrFinish(mActivityHelper.getFirebaseAuth().getCurrentUser());
124+
finish(mActivityHelper.getFirebaseAuth().getCurrentUser());
124125
}
125126
}
126127

@@ -285,11 +286,12 @@ private void showSubmitCodeFragment() {
285286
}
286287
}
287288

288-
private void saveCredentialsOrFinish(FirebaseUser user) {
289+
private void finish(FirebaseUser user) {
289290
IdpResponse response = new IdpResponse.Builder(PhoneAuthProvider.PROVIDER_ID, null)
290291
.setPhoneNumber(user.getPhoneNumber())
291292
.build();
292-
mActivityHelper.saveCredentialsOrFinish(mSaveSmartLock, this, user, null, response);
293+
setResult(ResultCodes.OK, response.toIntent());
294+
finish();
293295
}
294296

295297
private void showAlertDialog(@NonNull String s, DialogInterface.OnClickListener
@@ -314,7 +316,7 @@ public void onSuccess(final AuthResult authResult) {
314316
public void run() {
315317
if (!mIsDestroyed) {
316318
dismissLoadingDialog();
317-
saveCredentialsOrFinish(authResult.getUser());
319+
finish(authResult.getUser());
318320
}
319321
}
320322
}, SHORT_DELAY_MILLIS);

auth/src/main/java/com/firebase/ui/auth/ui/phone/VerifyPhoneNumberFragment.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@ public void onActivityCreated(@Nullable Bundle savedInstanceState) {
114114
PhoneNumber phoneNumber = PhoneNumberUtils.getPhoneNumber(phone);
115115
setPhoneNumber(phoneNumber);
116116
setCountryCode(phoneNumber);
117-
} else if (mHelper.getFlowParams().smartLockEnabled) {
117+
} else if (mHelper.getFlowParams().enableHints) {
118118
// Try SmartLock phone autocomplete hint
119119
showPhoneAutoCompleteHint();
120120
}

auth/src/main/java/com/firebase/ui/auth/util/signincontainer/SaveSmartLock.java

Lines changed: 2 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,6 @@ public class SaveSmartLock extends SmartLockBase<Status> {
5555
private String mName;
5656
private String mEmail;
5757
private String mPassword;
58-
private String mPhoneNumber;
5958
private String mProfilePictureUri;
6059
private IdpResponse mResponse;
6160

@@ -89,27 +88,11 @@ public void onAttach(Context context) {
8988

9089
@Override
9190
public void onConnected(Bundle bundle) {
92-
if (! TextUtils.isEmpty(mEmail)) {
93-
saveEmail();
94-
} else if (! TextUtils.isEmpty(mPhoneNumber)){
95-
savePhone();
96-
} else {
91+
if (TextUtils.isEmpty(mEmail)) {
9792
Log.e(TAG, "Unable to save null credential!");
9893
finish();
9994
return;
10095
}
101-
102-
}
103-
104-
private void savePhone() {
105-
Credential.Builder builder = new Credential.Builder(mPhoneNumber);
106-
builder.setAccountType(providerIdToAccountType(mResponse.getProviderType()));
107-
mHelper.getCredentialsApi()
108-
.save(mGoogleApiClient, builder.build())
109-
.setResultCallback(this);
110-
}
111-
112-
private void saveEmail() {
11396
Credential.Builder builder = new Credential.Builder(mEmail);
11497
builder.setPassword(mPassword);
11598
if (mPassword == null && mResponse != null) {
@@ -219,15 +202,14 @@ public void saveCredentialsOrFinish(FirebaseUser firebaseUser,
219202
@Nullable IdpResponse response) {
220203
mResponse = response;
221204

222-
if (!mHelper.getFlowParams().smartLockEnabled) {
205+
if (!mHelper.getFlowParams().enableCredentials) {
223206
finish();
224207
return;
225208
}
226209

227210
mName = firebaseUser.getDisplayName();
228211
mEmail = firebaseUser.getEmail();
229212
mPassword = password;
230-
mPhoneNumber = firebaseUser.getPhoneNumber();
231213
mProfilePictureUri = firebaseUser.getPhotoUrl() != null ? firebaseUser.getPhotoUrl()
232214
.toString() : null;
233215

0 commit comments

Comments
 (0)