Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion auth/src/main/java/com/firebase/ui/auth/AuthUI.java
Original file line number Diff line number Diff line change
Expand Up @@ -594,6 +594,7 @@ public PhoneBuilder() {
public PhoneBuilder setDefaultNumber(@NonNull String number) {
Preconditions.checkUnset(getParams(),
"Cannot overwrite previously set phone number",
ExtraConstants.PHONE,
ExtraConstants.COUNTRY_ISO,
ExtraConstants.NATIONAL_NUMBER);
if (!PhoneNumberUtils.isValid(number)) {
Expand All @@ -616,7 +617,9 @@ public PhoneBuilder setDefaultNumber(@NonNull String number) {
public PhoneBuilder setDefaultNumber(@NonNull String iso, @NonNull String number) {
Preconditions.checkUnset(getParams(),
"Cannot overwrite previously set phone number",
ExtraConstants.PHONE);
ExtraConstants.PHONE,
ExtraConstants.COUNTRY_ISO,
ExtraConstants.NATIONAL_NUMBER);
if (!PhoneNumberUtils.isValidIso(iso)) {
throw new IllegalStateException("Invalid country iso: " + iso);
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
package com.firebase.ui.auth.data.model;

import android.support.annotation.NonNull;
import android.support.annotation.RestrictTo;

import com.firebase.ui.auth.ErrorCodes;
import com.firebase.ui.auth.FirebaseUiException;

/**
* Represents an error in which the phone number couldn't be automatically verified and must
* therefore be manually verified by the client by sending an SMS code.
*/
@RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
public class PhoneNumberVerificationRequiredException extends FirebaseUiException {
private final String mPhoneNumber;

/**
* @param number the phone number requiring verification, formatted with a country code prefix
*/
public PhoneNumberVerificationRequiredException(@NonNull String number) {
super(ErrorCodes.PROVIDER_ERROR, "Phone number requires verification.");
mPhoneNumber = number;
}

/**
* @return the phone number requiring verification
*/
@NonNull
public String getPhoneNumber() {
return mPhoneNumber;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,8 @@
import com.firebase.ui.auth.data.model.UserCancellationException;
import com.firebase.ui.auth.ui.HelperActivityBase;
import com.firebase.ui.auth.ui.email.EmailActivity;
import com.firebase.ui.auth.viewmodel.ProviderSignInBase;
import com.firebase.ui.auth.viewmodel.RequestCodes;
import com.firebase.ui.auth.viewmodel.idp.ProviderSignInBase;

@RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
public class EmailSignInHandler extends ProviderSignInBase<Void> {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
import com.firebase.ui.auth.data.model.User;
import com.firebase.ui.auth.ui.HelperActivityBase;
import com.firebase.ui.auth.util.ExtraConstants;
import com.firebase.ui.auth.viewmodel.idp.ProviderSignInBase;
import com.firebase.ui.auth.viewmodel.ProviderSignInBase;
import com.google.firebase.auth.FacebookAuthProvider;

import org.json.JSONException;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,8 @@
import com.firebase.ui.auth.data.model.User;
import com.firebase.ui.auth.ui.HelperActivityBase;
import com.firebase.ui.auth.util.ExtraConstants;
import com.firebase.ui.auth.viewmodel.ProviderSignInBase;
import com.firebase.ui.auth.viewmodel.RequestCodes;
import com.firebase.ui.auth.viewmodel.idp.ProviderSignInBase;
import com.google.android.gms.auth.api.signin.GoogleSignIn;
import com.google.android.gms.auth.api.signin.GoogleSignInAccount;
import com.google.android.gms.auth.api.signin.GoogleSignInOptions;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,8 @@
import com.firebase.ui.auth.data.model.UserCancellationException;
import com.firebase.ui.auth.ui.HelperActivityBase;
import com.firebase.ui.auth.ui.phone.PhoneActivity;
import com.firebase.ui.auth.viewmodel.ProviderSignInBase;
import com.firebase.ui.auth.viewmodel.RequestCodes;
import com.firebase.ui.auth.viewmodel.idp.ProviderSignInBase;

@RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
public class PhoneSignInHandler extends ProviderSignInBase<AuthUI.IdpConfig> {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import android.app.Activity;
import android.app.Application;
import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.text.TextUtils;
Expand All @@ -18,6 +19,7 @@
import com.firebase.ui.auth.ui.idp.AuthMethodPickerActivity;
import com.firebase.ui.auth.ui.idp.SingleSignInActivity;
import com.firebase.ui.auth.ui.phone.PhoneActivity;
import com.firebase.ui.auth.util.ExtraConstants;
import com.firebase.ui.auth.util.GoogleApiUtils;
import com.firebase.ui.auth.util.data.ProviderUtils;
import com.firebase.ui.auth.viewmodel.AuthViewModelBase;
Expand Down Expand Up @@ -118,21 +120,31 @@ private void startAuthMethodChoice() {
}
}

private void redirectSignIn(String provider, String email) {
private void redirectSignIn(String provider, String id) {
switch (provider) {
case EmailAuthProvider.PROVIDER_ID:
setResult(Resource.<IdpResponse>forFailure(new IntentRequiredException(
EmailActivity.createIntent(getApplication(), getArguments(), email),
EmailActivity.createIntent(getApplication(), getArguments(), id),
RequestCodes.EMAIL_FLOW)));
break;
case PhoneAuthProvider.PROVIDER_ID:
Bundle args = new Bundle();
args.putString(ExtraConstants.PHONE, id);
setResult(Resource.<IdpResponse>forFailure(new IntentRequiredException(
PhoneActivity.createIntent(
getApplication(),
getArguments(),
args),
RequestCodes.PHONE_FLOW)));
break;
case GoogleAuthProvider.PROVIDER_ID:
case FacebookAuthProvider.PROVIDER_ID:
case TwitterAuthProvider.PROVIDER_ID:
setResult(Resource.<IdpResponse>forFailure(new IntentRequiredException(
SingleSignInActivity.createIntent(
getApplication(),
getArguments(),
new User.Builder(provider, email).build()),
new User.Builder(provider, id).build()),
RequestCodes.PROVIDER_FLOW)));
break;
default:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
import com.firebase.ui.auth.data.model.User;
import com.firebase.ui.auth.ui.HelperActivityBase;
import com.firebase.ui.auth.util.data.ProviderAvailability;
import com.firebase.ui.auth.viewmodel.idp.ProviderSignInBase;
import com.firebase.ui.auth.viewmodel.ProviderSignInBase;
import com.google.firebase.auth.TwitterAuthProvider;
import com.twitter.sdk.android.core.Callback;
import com.twitter.sdk.android.core.Result;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,8 @@

import com.firebase.ui.auth.R;

@SuppressWarnings("Registered")
@RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
public class AppCompatBase extends HelperActivityBase {
public abstract class AppCompatBase extends HelperActivityBase {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Expand Down
30 changes: 5 additions & 25 deletions auth/src/main/java/com/firebase/ui/auth/ui/FragmentBase.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,34 +4,24 @@
import android.support.annotation.Nullable;
import android.support.annotation.RestrictTo;
import android.support.v4.app.Fragment;
import android.view.ContextThemeWrapper;
import android.support.v4.app.FragmentActivity;

import com.firebase.ui.auth.IdpResponse;
import com.firebase.ui.auth.data.model.FlowParameters;
import com.google.firebase.auth.FirebaseUser;

@RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
public class FragmentBase extends Fragment implements ProgressView {
public abstract class FragmentBase extends Fragment implements ProgressView {
private HelperActivityBase mActivity;
private ProgressDialogHolder mProgressDialogHolder;

@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

if (!(getActivity() instanceof HelperActivityBase)) {
FragmentActivity activity = getActivity();
if (!(activity instanceof HelperActivityBase)) {
throw new IllegalStateException("Cannot use this fragment without the helper activity");
}
mActivity = (HelperActivityBase) getActivity();

mProgressDialogHolder = new ProgressDialogHolder(new ContextThemeWrapper(
getContext(), getFlowParams().themeId));
}

@Override
public void onDestroy() {
super.onDestroy();
mProgressDialogHolder.dismissDialog();
mActivity = (HelperActivityBase) activity;
}

public FlowParameters getFlowParams() {
Expand All @@ -44,14 +34,4 @@ public void startSaveCredentials(
@Nullable String password) {
mActivity.startSaveCredentials(firebaseUser, response, password);
}

@Override
public void showProgress(int message) {
mActivity.showProgress(message);
}

@Override
public void hideProgress() {
mActivity.hideProgress();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,17 +3,14 @@
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.annotation.RestrictTo;
import android.support.annotation.StringRes;
import android.support.v7.app.AppCompatActivity;

import com.firebase.ui.auth.IdpResponse;
import com.firebase.ui.auth.data.model.FlowParameters;
import com.firebase.ui.auth.ui.credentials.CredentialSaveActivity;
import com.firebase.ui.auth.util.AuthHelper;
import com.firebase.ui.auth.util.CredentialUtils;
import com.firebase.ui.auth.util.ExtraConstants;
import com.firebase.ui.auth.util.data.ProviderUtils;
Expand All @@ -23,14 +20,10 @@

import static com.firebase.ui.auth.util.Preconditions.checkNotNull;

@SuppressWarnings("Registered")
@RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
public class HelperActivityBase extends AppCompatActivity implements ProgressView {
public abstract class HelperActivityBase extends AppCompatActivity implements ProgressView {
private FlowParameters mParams;

private AuthHelper mAuthHelper;
private ProgressDialogHolder mProgressDialogHolder;

protected static Intent createBaseIntent(
@NonNull Context context,
@NonNull Class<? extends Activity> target,
Expand All @@ -42,19 +35,6 @@ protected static Intent createBaseIntent(
checkNotNull(flowParams, "flowParams cannot be null"));
}

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mAuthHelper = new AuthHelper(getFlowParams());
mProgressDialogHolder = new ProgressDialogHolder(this);
}

@Override
protected void onDestroy() {
super.onDestroy();
mProgressDialogHolder.dismissDialog();
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
Expand All @@ -71,10 +51,6 @@ public FlowParameters getFlowParams() {
return mParams;
}

public AuthHelper getAuthHelper() {
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Now the helper activity doesn't even have a helper! Love seeing this class die haha.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same here, that was the first class to die when I started the refactor—it killed me when I had to add it back for the staged PRs. 😆

return mAuthHelper;
}

public void finish(int resultCode, @Nullable Intent intent) {
setResult(resultCode, intent);
finish();
Expand All @@ -94,18 +70,4 @@ public void startSaveCredentials(
this, getFlowParams(), credential, response);
startActivityForResult(intent, RequestCodes.CRED_SAVE_FLOW);
}

@Override
public void showProgress(@StringRes int message) {
getDialogHolder().showLoadingDialog(message);
}

@Override
public void hideProgress() {
getDialogHolder().dismissDialog();
}

protected ProgressDialogHolder getDialogHolder() {
return mProgressDialogHolder;
}
}

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
import android.support.annotation.Nullable;
import android.support.annotation.RestrictTo;
import android.support.design.widget.TextInputLayout;
import android.support.v4.app.FragmentActivity;
import android.text.TextUtils;
import android.view.LayoutInflater;
import android.view.View;
Expand Down Expand Up @@ -113,12 +114,12 @@ public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceStat
FlowParameters flowParameters = getFlowParams();

if (flowParameters.isSingleProviderFlow()) {
PrivacyDisclosureUtils.setupTermsOfServiceAndPrivacyPolicyText(getContext(),
PrivacyDisclosureUtils.setupTermsOfServiceAndPrivacyPolicyText(requireContext(),
flowParameters,
termsText);
} else {
termsText.setVisibility(View.GONE);
PrivacyDisclosureUtils.setupTermsOfServiceFooter(getContext(),
PrivacyDisclosureUtils.setupTermsOfServiceFooter(requireContext(),
flowParameters,
footerText);
}
Expand All @@ -130,10 +131,11 @@ public void onActivityCreated(@Nullable Bundle savedInstanceState) {
mHandler = ViewModelProviders.of(this).get(CheckEmailHandler.class);
mHandler.init(getFlowParams());

if (!(getActivity() instanceof CheckEmailListener)) {
FragmentActivity activity = getActivity();
if (!(activity instanceof CheckEmailListener)) {
throw new IllegalStateException("Activity must implement CheckEmailListener");
}
mListener = (CheckEmailListener) getActivity();
mListener = (CheckEmailListener) activity;

mHandler.getOperation().observe(this, new ResourceObserver<User>(
this, R.string.fui_progress_dialog_checking_accounts) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;

@SuppressWarnings("WrongConstant")
public class CheckEmailHandler extends AuthViewModelBase<User> {
public CheckEmailHandler(Application application) {
super(application);
Expand Down
Loading