1414import android .widget .TextView ;
1515import android .widget .Toast ;
1616
17+ import com .firebase .ui .auth .AuthUI ;
1718import com .firebase .ui .auth .IdpResponse ;
1819import com .firebase .ui .auth .R ;
1920import com .firebase .ui .auth .data .model .FlowParameters ;
2829import com .firebase .ui .auth .util .signincontainer .SaveSmartLock ;
2930import com .firebase .ui .auth .util .ui .ImeHelper ;
3031import com .firebase .ui .auth .util .ui .PreambleHandler ;
32+ import com .firebase .ui .auth .util .ui .fieldvalidators .BaseValidator ;
3133import com .firebase .ui .auth .util .ui .fieldvalidators .EmailFieldValidator ;
34+ import com .firebase .ui .auth .util .ui .fieldvalidators .NoOpValidator ;
3235import com .firebase .ui .auth .util .ui .fieldvalidators .PasswordFieldValidator ;
3336import com .firebase .ui .auth .util .ui .fieldvalidators .RequiredFieldValidator ;
3437import com .google .android .gms .tasks .OnCompleteListener ;
@@ -57,12 +60,13 @@ public class RegisterEmailFragment extends FragmentBase implements
5760 private EditText mNameEditText ;
5861 private EditText mPasswordEditText ;
5962 private TextView mAgreementText ;
63+ private TextInputLayout mNameInput ;
6064 private TextInputLayout mEmailInput ;
6165 private TextInputLayout mPasswordInput ;
6266
6367 private EmailFieldValidator mEmailFieldValidator ;
6468 private PasswordFieldValidator mPasswordFieldValidator ;
65- private RequiredFieldValidator mNameValidator ;
69+ private BaseValidator mNameValidator ;
6670 private SaveSmartLock mSaveSmartLock ;
6771
6872 private User mUser ;
@@ -96,18 +100,26 @@ public View onCreateView(LayoutInflater inflater,
96100
97101 View v = inflater .inflate (R .layout .fui_register_email_layout , container , false );
98102
103+ // Get configuration
104+ AuthUI .IdpConfig emailConfig = ProviderUtils .getConfigFromIdps (
105+ getFlowParams ().providerInfo , EmailAuthProvider .PROVIDER_ID );
106+ boolean requireName = emailConfig .getParams ()
107+ .getBoolean (ExtraConstants .EXTRA_REQUIRE_NAME , true );
108+
99109 mEmailEditText = v .findViewById (R .id .email );
100110 mNameEditText = v .findViewById (R .id .name );
101111 mPasswordEditText = v .findViewById (R .id .password );
102112 mAgreementText = v .findViewById (R .id .create_account_text );
103113 mEmailInput = v .findViewById (R .id .email_layout );
114+ mNameInput = v .findViewById (R .id .name_layout );
104115 mPasswordInput = v .findViewById (R .id .password_layout );
105116
106117 mPasswordFieldValidator = new PasswordFieldValidator (
107118 mPasswordInput ,
108119 getResources ().getInteger (R .integer .fui_min_password_length ));
109- mNameValidator = new RequiredFieldValidator (
110- (TextInputLayout ) v .findViewById (R .id .name_layout ));
120+ mNameValidator = requireName
121+ ? new RequiredFieldValidator (mNameInput )
122+ : new NoOpValidator (mNameInput );
111123 mEmailFieldValidator = new EmailFieldValidator (mEmailInput );
112124
113125 ImeHelper .setImeOnDoneListener (mPasswordEditText , this );
@@ -117,6 +129,13 @@ public View onCreateView(LayoutInflater inflater,
117129 mPasswordEditText .setOnFocusChangeListener (this );
118130 v .findViewById (R .id .button_create ).setOnClickListener (this );
119131
132+ // Only show the name field if required
133+ if (requireName ) {
134+ mNameInput .setVisibility (View .VISIBLE );
135+ } else {
136+ mNameInput .setVisibility (View .GONE );
137+ }
138+
120139 if (Build .VERSION .SDK_INT >= Build .VERSION_CODES .O && getFlowParams ().enableCredentials ) {
121140 mEmailEditText .setImportantForAutofill (View .IMPORTANT_FOR_AUTOFILL_NO );
122141 }
@@ -138,7 +157,7 @@ public View onCreateView(LayoutInflater inflater,
138157 }
139158
140159 // See http://stackoverflow.com/questions/11082341/android-requestfocus-ineffective#comment51774752_11082523
141- if (!TextUtils .isEmpty (mNameEditText .getText ())) {
160+ if (!requireName || ! TextUtils .isEmpty (mNameEditText .getText ())) {
142161 safeRequestFocus (mPasswordEditText );
143162 } else if (!TextUtils .isEmpty (mEmailEditText .getText ())) {
144163 safeRequestFocus (mNameEditText );
@@ -169,7 +188,6 @@ public void onActivityCreated(@Nullable Bundle savedInstanceState) {
169188 }
170189
171190 mActivity = (HelperActivityBase ) getActivity ();
172- mSaveSmartLock = getAuthHelper ().getSaveSmartLockInstance (mActivity );
173191 PreambleHandler .setup (getContext (),
174192 getFlowParams (),
175193 R .string .fui_button_text_save ,
@@ -226,6 +244,14 @@ private void validateAndRegisterUser() {
226244 }
227245 }
228246
247+ private SaveSmartLock getSaveSmartLock () {
248+ if (mSaveSmartLock == null ) {
249+ mSaveSmartLock = SaveSmartLock .getInstance (mActivity );
250+ }
251+
252+ return mSaveSmartLock ;
253+ }
254+
229255 private void registerUser (final String email , final String name , final String password ) {
230256 final IdpResponse response = new IdpResponse .Builder (
231257 new User .Builder (EmailAuthProvider .PROVIDER_ID , email )
@@ -241,8 +267,9 @@ private void registerUser(final String email, final String name, final String pa
241267 .addOnSuccessListener (getActivity (), new OnSuccessListener <AuthResult >() {
242268 @ Override
243269 public void onSuccess (AuthResult authResult ) {
270+ SaveSmartLock saveSmartLock = getSaveSmartLock ();
244271 mActivity .saveCredentialsOrFinish (
245- mSaveSmartLock ,
272+ saveSmartLock ,
246273 authResult .getUser (),
247274 password ,
248275 response );
0 commit comments