Skip to content

Commit 4d80006

Browse files
committed
Merge branch 'version-4.0.0-dev' into dialog-investigate
Change-Id: I540fca91aa8e33f79cc364a5ed267a4fb76e6cf4
2 parents 2a3dbc1 + 6b740bc commit 4d80006

21 files changed

+497
-230
lines changed

auth/src/main/java/com/firebase/ui/auth/data/model/FlowParameters.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import android.support.annotation.Nullable;
2222
import android.support.annotation.RestrictTo;
2323
import android.support.annotation.StyleRes;
24+
import android.text.TextUtils;
2425

2526
import com.firebase.ui.auth.AuthUI.IdpConfig;
2627
import com.firebase.ui.auth.util.ExtraConstants;
@@ -128,4 +129,16 @@ public FlowParameters[] newArray(int size) {
128129
return new FlowParameters[size];
129130
}
130131
};
132+
133+
public boolean isSingleProviderFlow() {
134+
return providerInfo.size() == 1;
135+
}
136+
137+
public boolean isTermsOfServiceUrlProvided() {
138+
return !TextUtils.isEmpty(termsOfServiceUrl);
139+
}
140+
141+
public boolean isPrivacyPolicyUrlProvided() {
142+
return !TextUtils.isEmpty(privacyPolicyUrl);
143+
}
131144
}

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

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -91,11 +91,9 @@ public void onComplete(@NonNull Task<CredentialRequestResponse> task) {
9191
}
9292

9393
private void startAuthMethodChoice() {
94-
List<AuthUI.IdpConfig> idpConfigs = getArguments().providerInfo;
95-
9694
// If there is only one provider selected, launch the flow directly
97-
if (idpConfigs.size() == 1) {
98-
AuthUI.IdpConfig firstIdpConfig = idpConfigs.get(0);
95+
if (getArguments().isSingleProviderFlow()) {
96+
AuthUI.IdpConfig firstIdpConfig = getArguments().providerInfo.get(0);
9997
String firstProvider = firstIdpConfig.getProviderId();
10098
switch (firstProvider) {
10199
case EmailAuthProvider.PROVIDER_ID:

auth/src/main/java/com/firebase/ui/auth/ui/email/CheckEmailFragment.java

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,14 @@
1515
import android.widget.Button;
1616
import android.widget.EditText;
1717
import android.widget.ProgressBar;
18+
import android.widget.TextView;
1819

1920
import com.firebase.ui.auth.R;
21+
import com.firebase.ui.auth.data.model.FlowParameters;
2022
import com.firebase.ui.auth.data.model.User;
2123
import com.firebase.ui.auth.ui.FragmentBase;
2224
import com.firebase.ui.auth.util.ExtraConstants;
25+
import com.firebase.ui.auth.util.data.PrivacyDisclosureUtils;
2326
import com.firebase.ui.auth.util.ui.ImeHelper;
2427
import com.firebase.ui.auth.util.ui.fieldvalidators.EmailFieldValidator;
2528
import com.firebase.ui.auth.viewmodel.ResourceObserver;
@@ -104,6 +107,21 @@ public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceStat
104107
}
105108

106109
mNextButton.setOnClickListener(this);
110+
111+
TextView termsText = view.findViewById(R.id.email_tos_and_pp_text);
112+
TextView footerText = view.findViewById(R.id.email_footer_tos_and_pp_text);
113+
FlowParameters flowParameters = getFlowParams();
114+
115+
if (flowParameters.isSingleProviderFlow()) {
116+
PrivacyDisclosureUtils.setupTermsOfServiceAndPrivacyPolicyText(getContext(),
117+
flowParameters,
118+
termsText);
119+
} else {
120+
termsText.setVisibility(View.GONE);
121+
PrivacyDisclosureUtils.setupTermsOfServiceFooter(getContext(),
122+
flowParameters,
123+
footerText);
124+
}
107125
}
108126

109127
@Override

auth/src/main/java/com/firebase/ui/auth/ui/email/RegisterEmailFragment.java

Lines changed: 16 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,9 @@
2222
import com.firebase.ui.auth.data.model.User;
2323
import com.firebase.ui.auth.ui.FragmentBase;
2424
import com.firebase.ui.auth.util.ExtraConstants;
25+
import com.firebase.ui.auth.util.data.PrivacyDisclosureUtils;
2526
import com.firebase.ui.auth.util.data.ProviderUtils;
2627
import com.firebase.ui.auth.util.ui.ImeHelper;
27-
import com.firebase.ui.auth.util.ui.PreambleHandler;
2828
import com.firebase.ui.auth.util.ui.fieldvalidators.BaseValidator;
2929
import com.firebase.ui.auth.util.ui.fieldvalidators.EmailFieldValidator;
3030
import com.firebase.ui.auth.util.ui.fieldvalidators.NoOpValidator;
@@ -85,7 +85,9 @@ public void onCreate(@Nullable Bundle savedInstanceState) {
8585
@Override
8686
protected void onSuccess(@NonNull IdpResponse response) {
8787
startSaveCredentials(
88-
mHandler.getCurrentUser(), response, mPasswordEditText.getText().toString());
88+
mHandler.getCurrentUser(),
89+
response,
90+
mPasswordEditText.getText().toString());
8991
}
9092

9193
@Override
@@ -148,16 +150,17 @@ public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceStat
148150
// Only show the name field if required
149151
nameInput.setVisibility(requireName ? View.VISIBLE : View.GONE);
150152

151-
PreambleHandler.setup(
152-
getContext(),
153-
getFlowParams(),
154-
R.string.fui_button_text_save,
155-
view.<TextView>findViewById(R.id.create_account_text));
156153
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O && getFlowParams().enableCredentials) {
157154
mEmailEditText.setImportantForAutofill(View.IMPORTANT_FOR_AUTOFILL_NO);
158155
}
159156

160-
if (savedInstanceState != null) { return; }
157+
TextView footerText = view.findViewById(R.id.email_footer_tos_and_pp_text);
158+
PrivacyDisclosureUtils.setupTermsOfServiceFooter(getContext(), getFlowParams(), footerText);
159+
160+
// WARNING: Nothing below this line will be executed on rotation
161+
if (savedInstanceState != null) {
162+
return;
163+
}
161164

162165
// If email is passed in, fill in the field and move down to the name field.
163166
String email = mUser.getEmail();
@@ -253,11 +256,11 @@ private void validateAndRegisterUser() {
253256
boolean nameValid = mNameValidator.validate(name);
254257
if (emailValid && passwordValid && nameValid) {
255258
mHandler.startSignIn(new IdpResponse.Builder(
256-
new User.Builder(EmailAuthProvider.PROVIDER_ID, email)
257-
.setName(name)
258-
.setPhotoUri(mUser.getPhotoUri())
259-
.build())
260-
.build(),
259+
new User.Builder(EmailAuthProvider.PROVIDER_ID, email)
260+
.setName(name)
261+
.setPhotoUri(mUser.getPhotoUri())
262+
.build())
263+
.build(),
261264
password);
262265
}
263266
}

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

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
import android.view.ViewGroup;
3030
import android.widget.ImageView;
3131
import android.widget.ProgressBar;
32+
import android.widget.TextView;
3233
import android.widget.Toast;
3334

3435
import com.firebase.ui.auth.AuthUI;
@@ -43,6 +44,7 @@
4344
import com.firebase.ui.auth.data.remote.PhoneSignInHandler;
4445
import com.firebase.ui.auth.data.remote.TwitterSignInHandler;
4546
import com.firebase.ui.auth.ui.AppCompatBase;
47+
import com.firebase.ui.auth.util.data.PrivacyDisclosureUtils;
4648
import com.firebase.ui.auth.viewmodel.ResourceObserver;
4749
import com.firebase.ui.auth.viewmodel.idp.ProviderSignInBase;
4850
import com.firebase.ui.auth.viewmodel.idp.SocialProviderResponseHandler;
@@ -114,6 +116,11 @@ protected void onFailure(@NonNull Exception e) {
114116
}
115117
}
116118
});
119+
120+
TextView termsText = findViewById(R.id.main_tos_and_pp);
121+
PrivacyDisclosureUtils.setupTermsOfServiceAndPrivacyPolicyText(this,
122+
getFlowParams(),
123+
termsText);
117124
}
118125

119126
private void populateIdpList(List<IdpConfig> providerConfigs,

auth/src/main/java/com/firebase/ui/auth/ui/phone/PhoneActivity.java

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,8 @@ protected void onCreate(@Nullable Bundle savedInstanceState) {
9191
mPhoneNumber = savedInstanceState.getString(KEY_VERIFICATION_PHONE);
9292

9393
if (savedInstanceState.getSerializable(KEY_STATE) != null) {
94-
mVerificationState = (VerificationState) savedInstanceState.getSerializable(KEY_STATE);
94+
mVerificationState = (VerificationState) savedInstanceState.getSerializable(
95+
KEY_STATE);
9596
}
9697
return;
9798
}
@@ -165,7 +166,8 @@ public void submitConfirmationCode(@NonNull String confirmationCode) {
165166
// See: https://github.com/firebase/FirebaseUI-Android/issues/922
166167
Log.w(PHONE_VERIFICATION_LOG_TAG,
167168
String.format("submitConfirmationCode: mVerificationId is %s ; " +
168-
"confirmationCode is %s", TextUtils.isEmpty(mVerificationId) ? "empty" : "not empty",
169+
"confirmationCode is %s",
170+
TextUtils.isEmpty(mVerificationId) ? "empty" : "not empty",
169171
TextUtils.isEmpty(confirmationCode) ? "empty" : "not empty"));
170172
return;
171173
}
@@ -311,7 +313,8 @@ private void showAlertDialog(@StringRes int messageId,
311313
String s = getString(messageId);
312314
mAlertDialog = new AlertDialog.Builder(this)
313315
.setMessage(s)
314-
.setPositiveButton(R.string.fui_incorrect_code_dialog_positive_button_text, onClickListener)
316+
.setPositiveButton(R.string.fui_incorrect_code_dialog_positive_button_text,
317+
onClickListener)
315318
.show();
316319
}
317320

@@ -351,7 +354,8 @@ public void onFailure(@NonNull Exception e) {
351354
R.string.fui_incorrect_code_dialog_body,
352355
new DialogInterface.OnClickListener() {
353356
@Override
354-
public void onClick(DialogInterface dialog, int which) {
357+
public void onClick(DialogInterface dialog,
358+
int which) {
355359
getSubmitConfirmationCodeFragment()
356360
.setConfirmationCode("");
357361
}
@@ -362,7 +366,8 @@ public void onClick(DialogInterface dialog, int which) {
362366
R.string.fui_error_session_expired,
363367
new DialogInterface.OnClickListener() {
364368
@Override
365-
public void onClick(DialogInterface dialog, int which) {
369+
public void onClick(DialogInterface dialog,
370+
int which) {
366371
getSubmitConfirmationCodeFragment()
367372
.setConfirmationCode("");
368373
}

auth/src/main/java/com/firebase/ui/auth/ui/phone/SubmitConfirmationCodeFragment.java

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -34,9 +34,9 @@
3434
import com.firebase.ui.auth.ui.FragmentBase;
3535
import com.firebase.ui.auth.util.CustomCountDownTimer;
3636
import com.firebase.ui.auth.util.ExtraConstants;
37+
import com.firebase.ui.auth.util.data.PrivacyDisclosureUtils;
3738
import com.firebase.ui.auth.util.ui.BucketedTextChangeListener;
3839
import com.firebase.ui.auth.util.ui.ImeHelper;
39-
import com.firebase.ui.auth.util.ui.PreambleHandler;
4040

4141
/**
4242
* Display confirmation code to verify phone numbers input in {{@link VerifyPhoneNumberFragment}}
@@ -56,7 +56,6 @@ public class SubmitConfirmationCodeFragment extends FragmentBase {
5656
private Button mSubmitConfirmationButton;
5757
private CustomCountDownTimer mCountdownTimer;
5858
private PhoneActivity mVerifier;
59-
private TextView mAgreementText;
6059
private long mMillisUntilFinished;
6160

6261
public static SubmitConfirmationCodeFragment newInstance(FlowParameters flowParameters,
@@ -73,8 +72,9 @@ public static SubmitConfirmationCodeFragment newInstance(FlowParameters flowPara
7372

7473
@Nullable
7574
@Override
76-
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable
77-
Bundle savedInstanceState) {
75+
public View onCreateView(@NonNull LayoutInflater inflater,
76+
@Nullable ViewGroup container,
77+
@Nullable Bundle savedInstanceState) {
7878
View v = inflater.inflate(R.layout.fui_confirmation_code_layout, container, false);
7979
FragmentActivity parentActivity = getActivity();
8080

@@ -83,7 +83,6 @@ public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup c
8383
mResendCodeTextView = v.findViewById(R.id.resend_code);
8484
mConfirmationCodeEditText = v.findViewById(R.id.confirmation_code);
8585
mSubmitConfirmationButton = v.findViewById(R.id.submit_confirmation_code);
86-
mAgreementText = v.findViewById(R.id.create_account_tos);
8786

8887
final String phoneNumber = getArguments().getString(ExtraConstants.PHONE);
8988

@@ -93,10 +92,16 @@ public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup c
9392
setupCountDown(RESEND_WAIT_MILLIS);
9493
setupSubmitConfirmationCodeButton();
9594
setupResendConfirmationCodeTextView(phoneNumber);
96-
setUpTermsOfService();
9795
return v;
9896
}
9997

98+
@Override
99+
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
100+
super.onViewCreated(view, savedInstanceState);
101+
TextView footerText = view.<TextView>findViewById(R.id.email_footer_tos_and_pp_text);
102+
PrivacyDisclosureUtils.setupTermsOfServiceFooter(getContext(), getFlowParams(), footerText);
103+
}
104+
100105
@Override
101106
public void onStart() {
102107
super.onStart();
@@ -221,13 +226,6 @@ private void cancelTimer() {
221226
}
222227
}
223228

224-
private void setUpTermsOfService() {
225-
PreambleHandler.setup(getContext(),
226-
getFlowParams(),
227-
R.string.fui_continue_phone_login,
228-
mAgreementText);
229-
}
230-
231229
@VisibleForTesting(otherwise = VisibleForTesting.NONE)
232230
CustomCountDownTimer getCountdownTimer() {
233231
return mCountdownTimer;

auth/src/main/java/com/firebase/ui/auth/ui/phone/VerifyPhoneNumberFragment.java

Lines changed: 24 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@
4141
import com.firebase.ui.auth.util.ExtraConstants;
4242
import com.firebase.ui.auth.util.GoogleApiUtils;
4343
import com.firebase.ui.auth.util.data.PhoneNumberUtils;
44+
import com.firebase.ui.auth.util.data.PrivacyDisclosureUtils;
4445
import com.firebase.ui.auth.util.ui.ImeHelper;
4546
import com.firebase.ui.auth.viewmodel.RequestCodes;
4647
import com.google.android.gms.auth.api.credentials.Credential;
@@ -55,7 +56,6 @@
5556
@RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
5657
public class VerifyPhoneNumberFragment extends FragmentBase implements View.OnClickListener {
5758
public static final String TAG = "VerifyPhoneFragment";
58-
5959
private Context mAppContext;
6060

6161
private CountryListSpinner mCountryListSpinner;
@@ -107,15 +107,14 @@ public void onDonePressed() {
107107
parentActivity.setTitle(getString(R.string.fui_verify_phone_number_title));
108108
setupCountrySpinner();
109109
setupSendCodeButton();
110-
setupTerms();
111-
112110
return v;
113111
}
114112

115-
private void setupTerms() {
116-
final String verifyPhoneButtonText = getString(R.string.fui_verify_phone_number);
117-
final String terms = getString(R.string.fui_sms_terms_of_service, verifyPhoneButtonText);
118-
mSmsTermsText.setText(terms);
113+
@Override
114+
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
115+
super.onViewCreated(view, savedInstanceState);
116+
TextView footerText = view.<TextView>findViewById(R.id.email_footer_tos_and_pp_text);
117+
setupPrivacyDisclosures(footerText);
119118
}
120119

121120
@Override
@@ -273,6 +272,24 @@ private void setCountryCode(PhoneNumber phoneNumber) {
273272
}
274273
}
275274

275+
private void setupPrivacyDisclosures(TextView footerText) {
276+
final String verifyPhoneButtonText = getString(R.string.fui_verify_phone_number);
277+
final String multipleProviderFlowText = getString(R.string.fui_sms_terms_of_service,
278+
verifyPhoneButtonText);
279+
FlowParameters flowParameters = getFlowParams();
280+
281+
if (flowParameters.isSingleProviderFlow()) {
282+
PrivacyDisclosureUtils.setupTermsOfServiceAndPrivacyPolicySmsText(getContext(),
283+
flowParameters,
284+
mSmsTermsText);
285+
} else {
286+
PrivacyDisclosureUtils.setupTermsOfServiceFooter(getContext(),
287+
flowParameters,
288+
footerText);
289+
mSmsTermsText.setText(multipleProviderFlowText);
290+
}
291+
}
292+
276293
void showError(String e) {
277294
mPhoneInputLayout.setError(e);
278295
}

0 commit comments

Comments
 (0)