Skip to content

Commit afe6c2d

Browse files
SUPERCILEXsamtstern
authored andcommitted
Rewrite phone auth with new architecture and finalize progress revamp (#1253)
1 parent a385dfa commit afe6c2d

File tree

51 files changed

+895
-1675
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

51 files changed

+895
-1675
lines changed

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

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -594,6 +594,7 @@ public PhoneBuilder() {
594594
public PhoneBuilder setDefaultNumber(@NonNull String number) {
595595
Preconditions.checkUnset(getParams(),
596596
"Cannot overwrite previously set phone number",
597+
ExtraConstants.PHONE,
597598
ExtraConstants.COUNTRY_ISO,
598599
ExtraConstants.NATIONAL_NUMBER);
599600
if (!PhoneNumberUtils.isValid(number)) {
@@ -616,7 +617,9 @@ public PhoneBuilder setDefaultNumber(@NonNull String number) {
616617
public PhoneBuilder setDefaultNumber(@NonNull String iso, @NonNull String number) {
617618
Preconditions.checkUnset(getParams(),
618619
"Cannot overwrite previously set phone number",
619-
ExtraConstants.PHONE);
620+
ExtraConstants.PHONE,
621+
ExtraConstants.COUNTRY_ISO,
622+
ExtraConstants.NATIONAL_NUMBER);
620623
if (!PhoneNumberUtils.isValidIso(iso)) {
621624
throw new IllegalStateException("Invalid country iso: " + iso);
622625
}
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
package com.firebase.ui.auth.data.model;
2+
3+
import android.support.annotation.NonNull;
4+
import android.support.annotation.RestrictTo;
5+
6+
import com.firebase.ui.auth.ErrorCodes;
7+
import com.firebase.ui.auth.FirebaseUiException;
8+
9+
/**
10+
* Represents an error in which the phone number couldn't be automatically verified and must
11+
* therefore be manually verified by the client by sending an SMS code.
12+
*/
13+
@RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
14+
public class PhoneNumberVerificationRequiredException extends FirebaseUiException {
15+
private final String mPhoneNumber;
16+
17+
/**
18+
* @param number the phone number requiring verification, formatted with a country code prefix
19+
*/
20+
public PhoneNumberVerificationRequiredException(@NonNull String number) {
21+
super(ErrorCodes.PROVIDER_ERROR, "Phone number requires verification.");
22+
mPhoneNumber = number;
23+
}
24+
25+
/**
26+
* @return the phone number requiring verification
27+
*/
28+
@NonNull
29+
public String getPhoneNumber() {
30+
return mPhoneNumber;
31+
}
32+
}

auth/src/main/java/com/firebase/ui/auth/data/remote/EmailSignInHandler.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@
1111
import com.firebase.ui.auth.data.model.UserCancellationException;
1212
import com.firebase.ui.auth.ui.HelperActivityBase;
1313
import com.firebase.ui.auth.ui.email.EmailActivity;
14+
import com.firebase.ui.auth.viewmodel.ProviderSignInBase;
1415
import com.firebase.ui.auth.viewmodel.RequestCodes;
15-
import com.firebase.ui.auth.viewmodel.idp.ProviderSignInBase;
1616

1717
@RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
1818
public class EmailSignInHandler extends ProviderSignInBase<Void> {

auth/src/main/java/com/firebase/ui/auth/data/remote/FacebookSignInHandler.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
import com.firebase.ui.auth.data.model.User;
2626
import com.firebase.ui.auth.ui.HelperActivityBase;
2727
import com.firebase.ui.auth.util.ExtraConstants;
28-
import com.firebase.ui.auth.viewmodel.idp.ProviderSignInBase;
28+
import com.firebase.ui.auth.viewmodel.ProviderSignInBase;
2929
import com.google.firebase.auth.FacebookAuthProvider;
3030

3131
import org.json.JSONException;

auth/src/main/java/com/firebase/ui/auth/data/remote/GoogleSignInHandler.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,8 @@
1717
import com.firebase.ui.auth.data.model.User;
1818
import com.firebase.ui.auth.ui.HelperActivityBase;
1919
import com.firebase.ui.auth.util.ExtraConstants;
20+
import com.firebase.ui.auth.viewmodel.ProviderSignInBase;
2021
import com.firebase.ui.auth.viewmodel.RequestCodes;
21-
import com.firebase.ui.auth.viewmodel.idp.ProviderSignInBase;
2222
import com.google.android.gms.auth.api.signin.GoogleSignIn;
2323
import com.google.android.gms.auth.api.signin.GoogleSignInAccount;
2424
import com.google.android.gms.auth.api.signin.GoogleSignInOptions;

auth/src/main/java/com/firebase/ui/auth/data/remote/PhoneSignInHandler.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@
1212
import com.firebase.ui.auth.data.model.UserCancellationException;
1313
import com.firebase.ui.auth.ui.HelperActivityBase;
1414
import com.firebase.ui.auth.ui.phone.PhoneActivity;
15+
import com.firebase.ui.auth.viewmodel.ProviderSignInBase;
1516
import com.firebase.ui.auth.viewmodel.RequestCodes;
16-
import com.firebase.ui.auth.viewmodel.idp.ProviderSignInBase;
1717

1818
@RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
1919
public class PhoneSignInHandler extends ProviderSignInBase<AuthUI.IdpConfig> {

auth/src/main/java/com/firebase/ui/auth/data/remote/SignInKickstarter.java

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import android.app.Activity;
44
import android.app.Application;
55
import android.content.Intent;
6+
import android.os.Bundle;
67
import android.support.annotation.NonNull;
78
import android.support.annotation.Nullable;
89
import android.text.TextUtils;
@@ -18,6 +19,7 @@
1819
import com.firebase.ui.auth.ui.idp.AuthMethodPickerActivity;
1920
import com.firebase.ui.auth.ui.idp.SingleSignInActivity;
2021
import com.firebase.ui.auth.ui.phone.PhoneActivity;
22+
import com.firebase.ui.auth.util.ExtraConstants;
2123
import com.firebase.ui.auth.util.GoogleApiUtils;
2224
import com.firebase.ui.auth.util.data.ProviderUtils;
2325
import com.firebase.ui.auth.viewmodel.AuthViewModelBase;
@@ -118,21 +120,31 @@ private void startAuthMethodChoice() {
118120
}
119121
}
120122

121-
private void redirectSignIn(String provider, String email) {
123+
private void redirectSignIn(String provider, String id) {
122124
switch (provider) {
123125
case EmailAuthProvider.PROVIDER_ID:
124126
setResult(Resource.<IdpResponse>forFailure(new IntentRequiredException(
125-
EmailActivity.createIntent(getApplication(), getArguments(), email),
127+
EmailActivity.createIntent(getApplication(), getArguments(), id),
126128
RequestCodes.EMAIL_FLOW)));
127129
break;
130+
case PhoneAuthProvider.PROVIDER_ID:
131+
Bundle args = new Bundle();
132+
args.putString(ExtraConstants.PHONE, id);
133+
setResult(Resource.<IdpResponse>forFailure(new IntentRequiredException(
134+
PhoneActivity.createIntent(
135+
getApplication(),
136+
getArguments(),
137+
args),
138+
RequestCodes.PHONE_FLOW)));
139+
break;
128140
case GoogleAuthProvider.PROVIDER_ID:
129141
case FacebookAuthProvider.PROVIDER_ID:
130142
case TwitterAuthProvider.PROVIDER_ID:
131143
setResult(Resource.<IdpResponse>forFailure(new IntentRequiredException(
132144
SingleSignInActivity.createIntent(
133145
getApplication(),
134146
getArguments(),
135-
new User.Builder(provider, email).build()),
147+
new User.Builder(provider, id).build()),
136148
RequestCodes.PROVIDER_FLOW)));
137149
break;
138150
default:

auth/src/main/java/com/firebase/ui/auth/data/remote/TwitterSignInHandler.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
import com.firebase.ui.auth.data.model.User;
1818
import com.firebase.ui.auth.ui.HelperActivityBase;
1919
import com.firebase.ui.auth.util.data.ProviderAvailability;
20-
import com.firebase.ui.auth.viewmodel.idp.ProviderSignInBase;
20+
import com.firebase.ui.auth.viewmodel.ProviderSignInBase;
2121
import com.google.firebase.auth.TwitterAuthProvider;
2222
import com.twitter.sdk.android.core.Callback;
2323
import com.twitter.sdk.android.core.Result;

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

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,8 @@
2020

2121
import com.firebase.ui.auth.R;
2222

23-
@SuppressWarnings("Registered")
2423
@RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
25-
public class AppCompatBase extends HelperActivityBase {
24+
public abstract class AppCompatBase extends HelperActivityBase {
2625
@Override
2726
protected void onCreate(@Nullable Bundle savedInstanceState) {
2827
super.onCreate(savedInstanceState);

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

Lines changed: 5 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -4,34 +4,24 @@
44
import android.support.annotation.Nullable;
55
import android.support.annotation.RestrictTo;
66
import android.support.v4.app.Fragment;
7-
import android.view.ContextThemeWrapper;
7+
import android.support.v4.app.FragmentActivity;
88

99
import com.firebase.ui.auth.IdpResponse;
1010
import com.firebase.ui.auth.data.model.FlowParameters;
1111
import com.google.firebase.auth.FirebaseUser;
1212

1313
@RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
14-
public class FragmentBase extends Fragment implements ProgressView {
14+
public abstract class FragmentBase extends Fragment implements ProgressView {
1515
private HelperActivityBase mActivity;
16-
private ProgressDialogHolder mProgressDialogHolder;
1716

1817
@Override
1918
public void onCreate(@Nullable Bundle savedInstanceState) {
2019
super.onCreate(savedInstanceState);
21-
22-
if (!(getActivity() instanceof HelperActivityBase)) {
20+
FragmentActivity activity = getActivity();
21+
if (!(activity instanceof HelperActivityBase)) {
2322
throw new IllegalStateException("Cannot use this fragment without the helper activity");
2423
}
25-
mActivity = (HelperActivityBase) getActivity();
26-
27-
mProgressDialogHolder = new ProgressDialogHolder(new ContextThemeWrapper(
28-
getContext(), getFlowParams().themeId));
29-
}
30-
31-
@Override
32-
public void onDestroy() {
33-
super.onDestroy();
34-
mProgressDialogHolder.dismissDialog();
24+
mActivity = (HelperActivityBase) activity;
3525
}
3626

3727
public FlowParameters getFlowParams() {
@@ -44,14 +34,4 @@ public void startSaveCredentials(
4434
@Nullable String password) {
4535
mActivity.startSaveCredentials(firebaseUser, response, password);
4636
}
47-
48-
@Override
49-
public void showProgress(int message) {
50-
mActivity.showProgress(message);
51-
}
52-
53-
@Override
54-
public void hideProgress() {
55-
mActivity.hideProgress();
56-
}
5737
}

0 commit comments

Comments
 (0)