Skip to content

Commit d82aa47

Browse files
committed
Add default phone number to the Phone Auth number flow.
1 parent 5154ae0 commit d82aa47

File tree

5 files changed

+90
-19
lines changed

5 files changed

+90
-19
lines changed

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333

3434
import com.firebase.ui.auth.AuthUI;
3535
import com.firebase.ui.auth.AuthUI.IdpConfig;
36+
import com.firebase.ui.auth.AuthUI.PhoneIdpConfig;
3637
import com.firebase.ui.auth.ErrorCodes;
3738
import com.firebase.ui.auth.IdpResponse;
3839
import com.firebase.uidemo.R;
@@ -338,7 +339,7 @@ private List<IdpConfig> getSelectedProviders() {
338339

339340
if (mUsePhoneProvider.isChecked()) {
340341
selectedProviders.add(
341-
new IdpConfig.Builder(AuthUI.PHONE_VERIFICATION_PROVIDER).build());
342+
new PhoneIdpConfig.Builder().setPhone("").build()); // User default phone number
342343
}
343344

344345
return selectedProviders;

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

Lines changed: 76 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -275,8 +275,8 @@ private IdpConfig(@SupportedProvider @NonNull String providerId, List<String> sc
275275
mScopes = Collections.unmodifiableList(scopes);
276276
}
277277

278-
private IdpConfig(Parcel in) {
279-
mProviderId = in.readString();
278+
private IdpConfig(Parcel in, @SupportedProvider @NonNull String providerId) {
279+
mProviderId = providerId;
280280
mScopes = Collections.unmodifiableList(in.createStringArrayList());
281281
}
282282

@@ -289,17 +289,7 @@ public List<String> getScopes() {
289289
return mScopes;
290290
}
291291

292-
public static final Creator<IdpConfig> CREATOR = new Creator<IdpConfig>() {
293-
@Override
294-
public IdpConfig createFromParcel(Parcel in) {
295-
return new IdpConfig(in);
296-
}
297-
298-
@Override
299-
public IdpConfig[] newArray(int size) {
300-
return new IdpConfig[size];
301-
}
302-
};
292+
public static final Creator CREATOR = new IdpConfigCreator();
303293

304294
@Override
305295
public int describeContents() {
@@ -378,6 +368,79 @@ public IdpConfig build() {
378368
}
379369
}
380370

371+
public static class PhoneIdpConfig extends IdpConfig {
372+
private final String mPhone;
373+
374+
private PhoneIdpConfig(String phone) {
375+
super(AuthUI.PHONE_VERIFICATION_PROVIDER, new ArrayList<String>());
376+
mPhone = phone;
377+
}
378+
379+
private PhoneIdpConfig(Parcel in, @SupportedProvider @NonNull String providerId) {
380+
super(in, providerId);
381+
mPhone = in.readString();
382+
}
383+
384+
@Override
385+
public void writeToParcel(Parcel parcel, int i) {
386+
super.writeToParcel(parcel, i);
387+
parcel.writeString(mPhone);
388+
}
389+
390+
public String getPhone() {
391+
return mPhone;
392+
}
393+
394+
@Override
395+
public String toString() {
396+
return "PhoneIdpConfig{" +
397+
"mProviderId='" + super.mProviderId + '\'' +
398+
", mPhone=" + mPhone +
399+
'}';
400+
}
401+
402+
public static class Builder {
403+
private String mPhone;
404+
405+
/**
406+
* Builds the configuration parameters for phone identity provider.
407+
*/
408+
public Builder() {
409+
}
410+
411+
/**
412+
* Specifies default pre-filled into input field phone number.
413+
*/
414+
public Builder setPhone(String phone) {
415+
mPhone = phone;
416+
return this;
417+
}
418+
419+
public PhoneIdpConfig build() {
420+
return new PhoneIdpConfig(mPhone);
421+
}
422+
423+
}
424+
}
425+
426+
private static class IdpConfigCreator implements Parcelable.Creator {
427+
428+
@Override
429+
public IdpConfig createFromParcel(Parcel in) {
430+
final @SupportedProvider String providerId = in.readString();
431+
if (providerId.equals(AuthUI.PHONE_VERIFICATION_PROVIDER)) {
432+
return new PhoneIdpConfig(in, providerId);
433+
} else {
434+
return new IdpConfig(in, providerId);
435+
}
436+
}
437+
438+
@Override
439+
public IdpConfig[] newArray(int size) {
440+
return new IdpConfig[size];
441+
}
442+
}
443+
381444
/**
382445
* Base builder for both {@link SignInIntentBuilder}.
383446
*/

auth/src/main/java/com/firebase/ui/auth/provider/PhoneProvider.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import android.content.Intent;
66
import android.support.annotation.LayoutRes;
77

8+
import com.firebase.ui.auth.AuthUI.PhoneIdpConfig;
89
import com.firebase.ui.auth.R;
910
import com.firebase.ui.auth.ui.FlowParameters;
1011
import com.firebase.ui.auth.ui.phone.PhoneVerificationActivity;
@@ -15,10 +16,12 @@ public class PhoneProvider implements Provider {
1516

1617
private Activity mActivity;
1718
private FlowParameters mFlowParameters;
19+
private String mPhone;
1820

19-
public PhoneProvider(Activity activity, FlowParameters parameters) {
21+
public PhoneProvider(Activity activity, FlowParameters parameters, PhoneIdpConfig idpConfig) {
2022
mActivity = activity;
2123
mFlowParameters = parameters;
24+
mPhone = idpConfig.getPhone();
2225
}
2326

2427
@Override
@@ -35,7 +38,7 @@ public int getButtonLayout() {
3538
@Override
3639
public void startLogin(Activity activity) {
3740
activity.startActivityForResult(
38-
PhoneVerificationActivity.createIntent(activity, mFlowParameters, null),
41+
PhoneVerificationActivity.createIntent(activity, mFlowParameters, mPhone),
3942
RC_PHONE_FLOW);
4043
}
4144

auth/src/main/java/com/firebase/ui/auth/ui/idp/AuthMethodPickerActivity.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828

2929
import com.firebase.ui.auth.AuthUI;
3030
import com.firebase.ui.auth.AuthUI.IdpConfig;
31+
import com.firebase.ui.auth.AuthUI.PhoneIdpConfig;
3132
import com.firebase.ui.auth.IdpResponse;
3233
import com.firebase.ui.auth.R;
3334
import com.firebase.ui.auth.provider.EmailProvider;
@@ -114,7 +115,8 @@ private void populateIdpList(List<IdpConfig> providers) {
114115
mProviders.add(new EmailProvider(this, getFlowParams()));
115116
break;
116117
case AuthUI.PHONE_VERIFICATION_PROVIDER:
117-
mProviders.add(new PhoneProvider(this, getFlowParams()));
118+
PhoneIdpConfig phoneIdpConfig = (PhoneIdpConfig) idpConfig;
119+
mProviders.add(new PhoneProvider(this, getFlowParams(), phoneIdpConfig));
118120
break;
119121
default:
120122
Log.e(TAG, "Encountered unknown provider parcel with type: "

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

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -238,7 +238,8 @@ private void startAuthMethodChoice() {
238238

239239
// If there is only one provider selected, launch the flow directly
240240
if (idpConfigs.size() == 1) {
241-
String firstProvider = idpConfigs.get(0).getProviderId();
241+
AuthUI.IdpConfig idpConfig = idpConfigs.get(0);
242+
String firstProvider = idpConfig.getProviderId();
242243
switch (firstProvider) {
243244
case EmailAuthProvider.PROVIDER_ID:
244245
// Go directly to email flow
@@ -247,9 +248,10 @@ private void startAuthMethodChoice() {
247248
RC_EMAIL_FLOW);
248249
break;
249250
case PhoneAuthProvider.PROVIDER_ID:
251+
String phone = ((AuthUI.PhoneIdpConfig)idpConfig).getPhone();
250252
// Go directly to phone flow
251253
startActivityForResult(
252-
PhoneVerificationActivity.createIntent(getContext(), flowParams, null),
254+
PhoneVerificationActivity.createIntent(getContext(), flowParams, phone),
253255
RC_PHONE_FLOW);
254256
break;
255257
default:

0 commit comments

Comments
 (0)