diff --git a/app/src/main/java/com/firebase/uidemo/auth/AuthUiActivity.java b/app/src/main/java/com/firebase/uidemo/auth/AuthUiActivity.java index f1ddddf9d..9deff3fd0 100644 --- a/app/src/main/java/com/firebase/uidemo/auth/AuthUiActivity.java +++ b/app/src/main/java/com/firebase/uidemo/auth/AuthUiActivity.java @@ -50,7 +50,7 @@ public class AuthUiActivity extends AppCompatActivity { private static final String UNCHANGED_CONFIG_VALUE = "CHANGE-ME"; private static final String GOOGLE_TOS_URL = "https://www.google.com/policies/terms/"; - private static final String FIREBASE_TOS_URL = "https://www.firebase.com/terms/terms-of-service.html"; + private static final String FIREBASE_TOS_URL = "https://firebase.google.com/terms/"; private static final int RC_SIGN_IN = 100; @BindView(R.id.default_theme) diff --git a/auth/build.gradle b/auth/build.gradle index 1f70c9714..582d5cdd2 100644 --- a/auth/build.gradle +++ b/auth/build.gradle @@ -38,6 +38,8 @@ android { dependencies { compile "com.android.support:design:$support_library_version" + compile "com.android.support:customtabs:$support_library_version" + compile "com.google.firebase:firebase-auth:$firebase_version" compile "com.google.android.gms:play-services-auth:$firebase_version" @@ -46,7 +48,6 @@ dependencies { // The following libraries are needed to prevent incompatibilities with the facebook // library when updating com.android.support libraries: - compile "com.android.support:customtabs:$support_library_version" compile "com.android.support:cardview-v7:$support_library_version" diff --git a/auth/src/main/AndroidManifest.xml b/auth/src/main/AndroidManifest.xml index 857a90fdf..49e05fc3b 100644 --- a/auth/src/main/AndroidManifest.xml +++ b/auth/src/main/AndroidManifest.xml @@ -25,12 +25,6 @@ android:exported="false" android:theme="@style/Theme.AppCompat.NoActionBar"/> - - - - REQUEST_CODES = Arrays.asList( - RC_REGISTER_ACCOUNT, - RC_WELCOME_BACK_IDP, - RC_SIGN_IN - ); - - private ActivityHelper mActivityHelper; - - public AcquireEmailHelper(ActivityHelper activityHelper) { - mActivityHelper = activityHelper; - } - - public void checkAccountExists(final String email) { - FirebaseAuth firebaseAuth = mActivityHelper.getFirebaseAuth(); - mActivityHelper.showLoadingDialog(R.string.progress_dialog_loading); - if (!TextUtils.isEmpty(email)) { - firebaseAuth - .fetchProvidersForEmail(email) - .addOnFailureListener( - new TaskFailureLogger(TAG, "Error fetching providers for email")) - .addOnCompleteListener( - new OnCompleteListener() { - @Override - public void onComplete(@NonNull Task task) { - if (task.isSuccessful()) { - startEmailHandler(email, task.getResult().getProviders()); - } else { - mActivityHelper.dismissDialog(); - } - } - }); - } - } - - private void startEmailHandler(String email, List providers) { - mActivityHelper.dismissDialog(); - if (providers == null || providers.isEmpty()) { - // account doesn't exist yet - Intent registerIntent = RegisterEmailActivity.createIntent( - mActivityHelper.getApplicationContext(), - mActivityHelper.getFlowParams(), - email); - mActivityHelper.startActivityForResult(registerIntent, RC_REGISTER_ACCOUNT); - } else { - // account does exist - String provider = providers.get(0); - if (provider.equalsIgnoreCase(EmailAuthProvider.PROVIDER_ID)) { - Intent signInIntent = SignInActivity.createIntent( - mActivityHelper.getApplicationContext(), - mActivityHelper.getFlowParams(), - email); - mActivityHelper.startActivityForResult(signInIntent, RC_SIGN_IN); - } else { - Intent intent = WelcomeBackIdpPrompt.createIntent( - mActivityHelper.getApplicationContext(), - mActivityHelper.getFlowParams(), - provider, - null, - email); - mActivityHelper.startActivityForResult(intent, RC_WELCOME_BACK_IDP); - } - } - } - - public void onActivityResult(int requestCode, int resultCode, Intent data) { - if (REQUEST_CODES.contains(requestCode)) { - mActivityHelper.finish(resultCode, data); - } - } -} diff --git a/auth/src/main/java/com/firebase/ui/auth/ui/email/EmailHintContainerActivity.java b/auth/src/main/java/com/firebase/ui/auth/ui/email/EmailHintContainerActivity.java deleted file mode 100644 index 4ce1ea1bd..000000000 --- a/auth/src/main/java/com/firebase/ui/auth/ui/email/EmailHintContainerActivity.java +++ /dev/null @@ -1,84 +0,0 @@ -/* - * Copyright 2016 Google Inc. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except - * in compliance with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software distributed under the - * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either - * express or implied. See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.firebase.ui.auth.ui.email; - -import android.app.PendingIntent; -import android.content.Context; -import android.content.Intent; -import android.content.IntentSender; -import android.os.Bundle; -import android.util.Log; - -import com.firebase.ui.auth.ui.AppCompatBase; -import com.firebase.ui.auth.ui.BaseHelper; -import com.firebase.ui.auth.ui.FlowParameters; -import com.firebase.ui.auth.util.FirebaseAuthWrapper; -import com.firebase.ui.auth.util.FirebaseAuthWrapperFactory; -import com.google.android.gms.auth.api.credentials.Credential; - -public class EmailHintContainerActivity extends AppCompatBase { - private static final String TAG = "EmailHintContainer"; - private static final int RC_HINT = 13; - private AcquireEmailHelper mAcquireEmailHelper; - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - mAcquireEmailHelper = new AcquireEmailHelper(mActivityHelper); - FirebaseAuthWrapper apiWrapper = - FirebaseAuthWrapperFactory.getFirebaseAuthWrapper(mActivityHelper.getAppName()); - - PendingIntent hintIntent = apiWrapper.getEmailHintIntent(this); - if (hintIntent != null) { - try { - startIntentSenderForResult(hintIntent.getIntentSender(), RC_HINT, null, 0, 0, 0); - return; - } catch (IntentSender.SendIntentException e) { - Log.e(TAG, "Unable to start hint intent", e); - } - } - finish(RESULT_CANCELED, new Intent()); - } - - @Override - public void onActivityResult(int requestCode, int resultCode, Intent data) { - super.onActivityResult(requestCode, resultCode, data); - if (requestCode == RC_HINT && data != null) { - Credential credential = data.getParcelableExtra(Credential.EXTRA_KEY); - if (credential == null) { - // If the hint picker is cancelled show the SignInNoPasswordActivity - startActivityForResult( - SignInNoPasswordActivity.createIntent( - this, - mActivityHelper.getFlowParams(), - null), - AcquireEmailHelper.RC_SIGN_IN); - return; - } - mAcquireEmailHelper.checkAccountExists(credential.getId()); - } else { - mAcquireEmailHelper.onActivityResult(requestCode, resultCode, data); - } - } - - public static Intent createIntent( - Context context, - FlowParameters flowParams) { - return BaseHelper.createBaseIntent( - context, - EmailHintContainerActivity.class, - flowParams); - } -} diff --git a/auth/src/main/java/com/firebase/ui/auth/ui/email/RegisterEmailActivity.java b/auth/src/main/java/com/firebase/ui/auth/ui/email/RegisterEmailActivity.java index cccdad925..9055777bf 100644 --- a/auth/src/main/java/com/firebase/ui/auth/ui/email/RegisterEmailActivity.java +++ b/auth/src/main/java/com/firebase/ui/auth/ui/email/RegisterEmailActivity.java @@ -14,18 +14,24 @@ package com.firebase.ui.auth.ui.email; +import android.app.PendingIntent; import android.content.Context; import android.content.Intent; +import android.content.IntentSender; import android.net.Uri; import android.os.Bundle; +import android.support.annotation.ColorInt; import android.support.annotation.NonNull; import android.support.annotation.Nullable; +import android.support.customtabs.CustomTabsIntent; import android.support.design.widget.TextInputLayout; import android.support.v4.content.ContextCompat; import android.text.SpannableStringBuilder; +import android.text.TextUtils; import android.text.style.ForegroundColorSpan; +import android.util.Log; +import android.util.TypedValue; import android.view.View; -import android.widget.Button; import android.widget.EditText; import android.widget.TextView; @@ -35,31 +41,42 @@ import com.firebase.ui.auth.ui.ExtraConstants; import com.firebase.ui.auth.ui.FlowParameters; import com.firebase.ui.auth.ui.TaskFailureLogger; +import com.firebase.ui.auth.ui.account_link.WelcomeBackIdpPrompt; import com.firebase.ui.auth.ui.email.field_validators.EmailFieldValidator; import com.firebase.ui.auth.ui.email.field_validators.PasswordFieldValidator; import com.firebase.ui.auth.ui.email.field_validators.RequiredFieldValidator; +import com.firebase.ui.auth.util.FirebaseAuthWrapperFactory; import com.firebase.ui.auth.util.signincontainer.SaveSmartLock; +import com.google.android.gms.auth.api.credentials.Credential; import com.google.android.gms.tasks.OnCompleteListener; import com.google.android.gms.tasks.OnFailureListener; import com.google.android.gms.tasks.OnSuccessListener; import com.google.android.gms.tasks.Task; import com.google.firebase.auth.AuthResult; -import com.google.firebase.auth.FirebaseAuth; +import com.google.firebase.auth.EmailAuthProvider; import com.google.firebase.auth.FirebaseAuthInvalidCredentialsException; import com.google.firebase.auth.FirebaseAuthUserCollisionException; import com.google.firebase.auth.FirebaseAuthWeakPasswordException; import com.google.firebase.auth.FirebaseUser; +import com.google.firebase.auth.ProviderQueryResult; import com.google.firebase.auth.UserProfileChangeRequest; +import java.util.List; + /** * Activity displaying a form to create a new email/password account. */ -public class RegisterEmailActivity extends AppCompatBase implements View.OnClickListener { +public class RegisterEmailActivity extends AppCompatBase implements View.OnClickListener, View.OnFocusChangeListener { private static final String TAG = "RegisterEmailActivity"; + private static final String PREV_EMAIL = "previous_email"; + private static final int RC_HINT = 13; + private static final int RC_WELCOME_BACK_IDP = 15; + private static final int RC_SIGN_IN = 16; + private String mPrevEmail; private EditText mEmailEditText; - private EditText mPasswordEditText; private EditText mNameEditText; + private EditText mPasswordEditText; private EmailFieldValidator mEmailFieldValidator; private PasswordFieldValidator mPasswordFieldValidator; private RequiredFieldValidator mNameValidator; @@ -73,24 +90,45 @@ protected void onCreate(Bundle savedInstanceState) { mSaveSmartLock = mActivityHelper.getSaveSmartLockInstance(); - mEmailEditText = (EditText) findViewById(R.id.email); - mNameEditText = (EditText) findViewById(R.id.name); - mPasswordEditText = (EditText) findViewById(R.id.password); - mPasswordFieldValidator = new PasswordFieldValidator( (TextInputLayout) findViewById(R.id.password_layout), getResources().getInteger(R.integer.min_password_length)); mNameValidator = new RequiredFieldValidator((TextInputLayout) findViewById(R.id.name_layout)); mEmailFieldValidator = new EmailFieldValidator((TextInputLayout) findViewById(R.id.email_layout)); + mEmailEditText = (EditText) findViewById(R.id.email); + mNameEditText = (EditText) findViewById(R.id.name); + mPasswordEditText = (EditText) findViewById(R.id.password); + + mEmailEditText.setOnFocusChangeListener(this); + mNameEditText.setOnFocusChangeListener(this); + mPasswordEditText.setOnFocusChangeListener(this); + findViewById(R.id.button_create).setOnClickListener(this); + + setUpTermsOfService(); + + // Activity rotated + if (savedInstanceState != null) { + mPrevEmail = savedInstanceState.getString(PREV_EMAIL); + return; + } + String email = getIntent().getStringExtra(ExtraConstants.EXTRA_EMAIL); - if (email != null) { + if (!TextUtils.isEmpty(email)) { mEmailEditText.setText(email); - mEmailEditText.setEnabled(false); + mNameEditText.requestFocus(); + return; + } + + if (mActivityHelper.getFlowParams().smartLockEnabled) { + showEmailAutoCompleteHint(); } - setUpTermsOfService(); - Button createButton = (Button) findViewById(R.id.button_create); - createButton.setOnClickListener(this); + } + + @Override + protected void onSaveInstanceState(Bundle outState) { + outState.putString(PREV_EMAIL, mPrevEmail); + super.onSaveInstanceState(outState); } private void setUpTermsOfService() { @@ -111,28 +149,156 @@ private void setUpTermsOfService() { agreementText.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { - Intent intent = new Intent(Intent.ACTION_VIEW).setData(Uri.parse - (mActivityHelper.getFlowParams().termsOfServiceUrl)); - startActivity(intent); + // Getting default color + TypedValue typedValue = new TypedValue(); + getTheme().resolveAttribute(R.attr.colorPrimary, typedValue, true); + @ColorInt int color = typedValue.data; + + new CustomTabsIntent.Builder() + .setToolbarColor(color) + .build() + .launchUrl( + RegisterEmailActivity.this, + Uri.parse(mActivityHelper.getFlowParams().termsOfServiceUrl)); } }); } + private void showEmailAutoCompleteHint() { + PendingIntent hintIntent = FirebaseAuthWrapperFactory + .getFirebaseAuthWrapper(mActivityHelper.getAppName()).getEmailHintIntent(this); + if (hintIntent != null) { + try { + startIntentSenderForResult(hintIntent.getIntentSender(), RC_HINT, null, 0, 0, 0); + } catch (IntentSender.SendIntentException e) { + Log.e(TAG, "Unable to start hint intent", e); + } + } + } + + @Override + public void onActivityResult(int requestCode, int resultCode, Intent data) { + super.onActivityResult(requestCode, resultCode, data); + switch (requestCode) { + case RC_HINT: + if (data != null) { + Credential credential = data.getParcelableExtra(Credential.EXTRA_KEY); + if (credential != null) { + mEmailEditText.setText(credential.getId()); + String name = credential.getName(); + mNameEditText.setText(name); + if (TextUtils.isEmpty(name)) { + mNameEditText.requestFocus(); + } else { + mPasswordEditText.requestFocus(); + } + } + } + break; + case RC_SIGN_IN: + case RC_WELCOME_BACK_IDP: + finish(resultCode, data); + break; + } + } + + @Override + public void onFocusChange(View view, boolean hasFocus) { + if (hasFocus) return; // Only consider fields losing focus + + int id = view.getId(); + if (id == R.id.email) { + String email = mEmailEditText.getText().toString(); + if (mEmailFieldValidator.validate(mEmailEditText.getText())) { + if (!email.equals(mPrevEmail)) { + mActivityHelper.showLoadingDialog(R.string.progress_dialog_checking_accounts); + checkAccountExists(email); + mPrevEmail = email; + } + } + } else if (id == R.id.name) { + mNameValidator.validate(mNameEditText.getText()); + } else if (id == R.id.password) { + mPasswordFieldValidator.validate(mPasswordEditText.getText()); + } + } + + public void checkAccountExists(final String email) { + if (!TextUtils.isEmpty(email)) { + mActivityHelper.getFirebaseAuth() + .fetchProvidersForEmail(email) + .addOnFailureListener( + new TaskFailureLogger(TAG, "Error fetching providers for email")) + .addOnCompleteListener(this, new OnCompleteListener() { + @Override + public void onComplete(@NonNull Task task) { + mActivityHelper.dismissDialog(); + } + }) + .addOnSuccessListener(new OnSuccessListener() { + @Override + public void onSuccess(ProviderQueryResult result) { + List providers = result.getProviders(); + if (providers != null && !providers.isEmpty()) { + // There is an account tied to this email. + // If only the email provider is associated with the account, + // direct the user to the email sign in flow. + // Otherwise, direct the user to sign in with the IDP they previously selected. + + String provider = providers.get(0); + if (provider.equalsIgnoreCase(EmailAuthProvider.PROVIDER_ID)) { + Intent signInIntent = SignInActivity.createIntent( + RegisterEmailActivity.this, + mActivityHelper.getFlowParams(), + email); + mActivityHelper.startActivityForResult(signInIntent, + RC_SIGN_IN); + } else { + Intent intent = WelcomeBackIdpPrompt.createIntent( + RegisterEmailActivity.this, + mActivityHelper.getFlowParams(), + provider, + null, + email); + mActivityHelper.startActivityForResult(intent, + RC_WELCOME_BACK_IDP); + } + } + } + }); + } + } + + @Override + public void onClick(View view) { + if (view.getId() == R.id.button_create) { + String email = mEmailEditText.getText().toString(); + String password = mPasswordEditText.getText().toString(); + String name = mNameEditText.getText().toString(); + + boolean emailValid = mEmailFieldValidator.validate(email); + boolean passwordValid = mPasswordFieldValidator.validate(password); + boolean nameValid = mNameValidator.validate(name); + if (emailValid && passwordValid && nameValid) { + mActivityHelper.showLoadingDialog(R.string.progress_dialog_signing_up); + registerUser(email, name, password); + } + } + } + private void registerUser(final String email, final String name, final String password) { - final FirebaseAuth firebaseAuth = mActivityHelper.getFirebaseAuth(); - // create the user - firebaseAuth.createUserWithEmailAndPassword(email, password) + mActivityHelper.getFirebaseAuth() + .createUserWithEmailAndPassword(email, password) .addOnFailureListener(new TaskFailureLogger(TAG, "Error creating user")) .addOnSuccessListener(new OnSuccessListener() { @Override public void onSuccess(AuthResult authResult) { - final FirebaseUser firebaseUser = authResult.getUser(); + // Set display name UserProfileChangeRequest changeNameRequest = - new UserProfileChangeRequest.Builder() - .setDisplayName(name).build(); + new UserProfileChangeRequest.Builder().setDisplayName(name).build(); - // Set display name - firebaseUser.updateProfile(changeNameRequest) + final FirebaseUser user = authResult.getUser(); + user.updateProfile(changeNameRequest) .addOnFailureListener(new TaskFailureLogger( TAG, "Error setting display name")) .addOnCompleteListener(new OnCompleteListener() { @@ -143,13 +309,13 @@ public void onComplete(@NonNull Task task) { // the credential to SmartLock (if enabled). mActivityHelper.saveCredentialsOrFinish( mSaveSmartLock, - firebaseUser, + user, password); } }); } }) - .addOnFailureListener(new OnFailureListener() { + .addOnFailureListener(this, new OnFailureListener() { @Override public void onFailure(@NonNull Exception e) { mActivityHelper.dismissDialog(); @@ -168,6 +334,7 @@ public void onFailure(@NonNull Exception e) { } else if (e instanceof FirebaseAuthUserCollisionException) { // Collision with existing user email emailInput.setError(getString(R.string.error_user_collision)); + checkAccountExists(mEmailEditText.getText().toString()); } else { // General error message, this branch should not be invoked but // covers future API changes @@ -177,27 +344,11 @@ public void onFailure(@NonNull Exception e) { }); } - @Override - public void onClick(View view) { - if (view.getId() == R.id.button_create) { - String email = mEmailEditText.getText().toString(); - String password = mPasswordEditText.getText().toString(); - String name = mNameEditText.getText().toString(); - - boolean emailValid = mEmailFieldValidator.validate(email); - boolean passwordValid = mPasswordFieldValidator.validate(password); - boolean nameValid = mNameValidator.validate(name); - if (emailValid && passwordValid && nameValid) { - mActivityHelper.showLoadingDialog(R.string.progress_dialog_signing_up); - registerUser(email, name, password); - } - } + public static Intent createIntent(Context context, FlowParameters flowParams) { + return createIntent(context, flowParams, null); } - public static Intent createIntent( - Context context, - FlowParameters flowParams, - String email) { + public static Intent createIntent(Context context, FlowParameters flowParams, String email) { return BaseHelper.createBaseIntent(context, RegisterEmailActivity.class, flowParams) .putExtra(ExtraConstants.EXTRA_EMAIL, email); } diff --git a/auth/src/main/java/com/firebase/ui/auth/ui/email/SignInNoPasswordActivity.java b/auth/src/main/java/com/firebase/ui/auth/ui/email/SignInNoPasswordActivity.java deleted file mode 100644 index 66f83c208..000000000 --- a/auth/src/main/java/com/firebase/ui/auth/ui/email/SignInNoPasswordActivity.java +++ /dev/null @@ -1,82 +0,0 @@ -/* - * Copyright 2016 Google Inc. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except - * in compliance with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software distributed under the - * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either - * express or implied. See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.firebase.ui.auth.ui.email; - -import android.content.Context; -import android.content.Intent; -import android.os.Bundle; -import android.support.design.widget.TextInputLayout; -import android.view.View; -import android.view.WindowManager; -import android.widget.Button; -import android.widget.EditText; - -import com.firebase.ui.auth.R; -import com.firebase.ui.auth.ui.AppCompatBase; -import com.firebase.ui.auth.ui.BaseHelper; -import com.firebase.ui.auth.ui.ExtraConstants; -import com.firebase.ui.auth.ui.FlowParameters; -import com.firebase.ui.auth.ui.email.field_validators.EmailFieldValidator; - -public class SignInNoPasswordActivity extends AppCompatBase implements View.OnClickListener { - private EditText mEmailEditText; - private EmailFieldValidator mEmailFieldValidator; - private AcquireEmailHelper mAcquireEmailHelper; - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - mAcquireEmailHelper = new AcquireEmailHelper(mActivityHelper); - setContentView(R.layout.signin_no_password_layout); - - String email = getIntent().getStringExtra(ExtraConstants.EXTRA_EMAIL); - mEmailFieldValidator = new EmailFieldValidator( - (TextInputLayout) findViewById(R.id.input_layout_email)); - mEmailEditText = (EditText) findViewById(R.id.email); - if (email != null) { - mEmailEditText.setText(email); - } - - // show the keyboard - getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE); - - Button button = (Button) findViewById(R.id.button_ok); - button.setOnClickListener(this); - } - - @Override - protected void onActivityResult(int requestCode, int resultCode, Intent data) { - super.onActivityResult(requestCode, resultCode, data); - mAcquireEmailHelper.onActivityResult(requestCode, resultCode, data); - } - - @Override - public void onClick(View view) { - if (!mEmailFieldValidator.validate(mEmailEditText.getText())) { - return; - } - mActivityHelper.showLoadingDialog(R.string.progress_dialog_loading); - String email = mEmailEditText.getText().toString(); - mAcquireEmailHelper.checkAccountExists(email); - } - - public static Intent createIntent( - Context context, - FlowParameters flowParams, - String email) { - return BaseHelper.createBaseIntent(context, SignInNoPasswordActivity.class, flowParams) - .putExtra(ExtraConstants.EXTRA_EMAIL, email); - } -} 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 1d0db4cd8..639860d4e 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 @@ -38,8 +38,7 @@ import com.firebase.ui.auth.ui.BaseHelper; import com.firebase.ui.auth.ui.FlowParameters; import com.firebase.ui.auth.ui.TaskFailureLogger; -import com.firebase.ui.auth.ui.email.EmailHintContainerActivity; -import com.firebase.ui.auth.util.EmailFlowUtil; +import com.firebase.ui.auth.ui.email.RegisterEmailActivity; import com.firebase.ui.auth.util.signincontainer.SaveSmartLock; import com.google.firebase.auth.AuthCredential; import com.google.firebase.auth.FacebookAuthProvider; @@ -54,7 +53,7 @@ * Presents the list of authentication options for this app to the user. If an * identity provider option is selected, a {@link CredentialSignInHandler} * is launched to manage the IDP-specific sign-in flow. If email authentication is chosen, - * the {@link EmailHintContainerActivity root email flow activity} is started. + * the {@link RegisterEmailActivity} is started. * *

* Authentication picker activity rendered with all authentication options and default settings mIdpProviders; - @Nullable private SaveSmartLock mSaveSmartLock; + @Nullable + private SaveSmartLock mSaveSmartLock; @Override protected void onCreate(Bundle savedInstanceState) { @@ -188,10 +188,9 @@ public void onFailure(Bundle extra) { @Override public void onClick(View view) { if (view.getId() == R.id.email_provider) { - Intent intent = EmailFlowUtil.createIntent( - this, - mActivityHelper.getFlowParams()); - startActivityForResult(intent, RC_EMAIL_FLOW); + startActivityForResult( + RegisterEmailActivity.createIntent(this, mActivityHelper.getFlowParams()), + RC_EMAIL_FLOW); } } diff --git a/auth/src/main/java/com/firebase/ui/auth/util/EmailFlowUtil.java b/auth/src/main/java/com/firebase/ui/auth/util/EmailFlowUtil.java deleted file mode 100644 index d0db5c591..000000000 --- a/auth/src/main/java/com/firebase/ui/auth/util/EmailFlowUtil.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.firebase.ui.auth.util; - -import android.content.Context; -import android.content.Intent; - -import com.firebase.ui.auth.ui.FlowParameters; -import com.firebase.ui.auth.ui.email.EmailHintContainerActivity; -import com.firebase.ui.auth.ui.email.SignInNoPasswordActivity; - -/** - * Helper class to kick off the Email/Password sign-in flow. - */ -public class EmailFlowUtil { - - /** - * Return an intent for either {@link EmailHintContainerActivity} or - * {@link SignInNoPasswordActivity} depending on if SmartLock is enabled. - */ - public static Intent createIntent(Context context, FlowParameters parameters) { - if (parameters.smartLockEnabled) { - return EmailHintContainerActivity.createIntent(context, parameters); - } else { - return SignInNoPasswordActivity.createIntent(context, parameters, null); - } - } - -} diff --git a/auth/src/main/java/com/firebase/ui/auth/util/signincontainer/SignInDelegate.java b/auth/src/main/java/com/firebase/ui/auth/util/signincontainer/SignInDelegate.java index 102be1f3f..db23a4a0e 100644 --- a/auth/src/main/java/com/firebase/ui/auth/util/signincontainer/SignInDelegate.java +++ b/auth/src/main/java/com/firebase/ui/auth/util/signincontainer/SignInDelegate.java @@ -20,10 +20,9 @@ import com.firebase.ui.auth.ui.FlowParameters; import com.firebase.ui.auth.ui.FragmentHelper; import com.firebase.ui.auth.ui.TaskFailureLogger; -import com.firebase.ui.auth.ui.email.SignInNoPasswordActivity; +import com.firebase.ui.auth.ui.email.RegisterEmailActivity; import com.firebase.ui.auth.ui.idp.AuthMethodPickerActivity; import com.firebase.ui.auth.util.CredentialsApiHelper; -import com.firebase.ui.auth.util.EmailFlowUtil; import com.firebase.ui.auth.util.GoogleApiConstants; import com.firebase.ui.auth.util.PlayServicesHelper; import com.google.android.gms.auth.api.Auth; @@ -58,8 +57,7 @@ * with this credential. If it does not, the * {@link AuthMethodPickerActivity authentication method picker activity} * is started, unless only email is supported, in which case the - * {@link SignInNoPasswordActivity email sign-in flow} - * is started. + * {@link RegisterEmailActivity} is started. */ public class SignInDelegate extends SmartLockBase { private static final String TAG = "SignInDelegate"; @@ -254,9 +252,7 @@ private void startAuthMethodChoice() { if (idpConfigs.size() == 1) { if (idpConfigs.get(0).getProviderId().equals(EmailAuthProvider.PROVIDER_ID)) { startActivityForResult( - EmailFlowUtil.createIntent( - getContext(), - mHelper.getFlowParams()), + RegisterEmailActivity.createIntent(getContext(), mHelper.getFlowParams()), RC_EMAIL_FLOW); } else { redirectToIdpSignIn(null, @@ -331,7 +327,7 @@ public void onComplete(@NonNull Task task) { private void redirectToIdpSignIn(String email, String accountType) { if (TextUtils.isEmpty(accountType)) { startActivityForResult( - SignInNoPasswordActivity.createIntent( + RegisterEmailActivity.createIntent( getContext(), mHelper.getFlowParams(), email), diff --git a/auth/src/main/res/layout/signin_no_password_layout.xml b/auth/src/main/res/layout/signin_no_password_layout.xml deleted file mode 100644 index 82f7150b8..000000000 --- a/auth/src/main/res/layout/signin_no_password_layout.xml +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - - - - - - -