Skip to content

Commit f5b0b75

Browse files
committed
Adds footer required for GDPR compliance. Also made changes based on samsterns feedback
1 parent dac52e6 commit f5b0b75

13 files changed

+128
-54
lines changed

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

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,12 @@
2020
import android.support.annotation.NonNull;
2121
import android.support.annotation.Nullable;
2222
import android.support.annotation.RestrictTo;
23+
import android.support.annotation.StringRes;
2324
import android.support.annotation.StyleRes;
25+
import android.text.TextUtils;
2426

2527
import com.firebase.ui.auth.AuthUI.IdpConfig;
28+
import com.firebase.ui.auth.R;
2629
import com.firebase.ui.auth.util.ExtraConstants;
2730
import com.firebase.ui.auth.util.Preconditions;
2831

@@ -128,4 +131,24 @@ public FlowParameters[] newArray(int size) {
128131
return new FlowParameters[size];
129132
}
130133
};
134+
135+
public boolean isSingleProviderFlow() {
136+
return providerInfo.size() == 1;
137+
}
138+
139+
public @StringRes int getGlobalTermsStringResource() {
140+
boolean hasTos = !TextUtils.isEmpty(termsOfServiceUrl);
141+
boolean hasPp = !TextUtils.isEmpty(privacyPolicyUrl);
142+
if(hasTos && hasPp) {
143+
return R.string.fui_tos_and_pp;
144+
} else if(hasTos) {
145+
return R.string.fui_tos_only;
146+
} else {
147+
return R.string.fui_pp_only;
148+
}
149+
}
150+
151+
public @StringRes int getGlobalTermsFooterStringResource() {
152+
return R.string.fui_tos_and_pp_footer;
153+
}
131154
}

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

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,8 @@
1515
import android.widget.EditText;
1616
import android.widget.TextView;
1717

18-
import com.firebase.ui.auth.AuthUI;
1918
import com.firebase.ui.auth.R;
19+
import com.firebase.ui.auth.data.model.FlowParameters;
2020
import com.firebase.ui.auth.data.model.User;
2121
import com.firebase.ui.auth.ui.FragmentBase;
2222
import com.firebase.ui.auth.util.ExtraConstants;
@@ -101,7 +101,9 @@ public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceStat
101101
}
102102

103103
view.findViewById(R.id.button_next).setOnClickListener(this);
104-
setUpTermsOfService(view);
104+
105+
TextView termsView = view.<TextView>findViewById(R.id.email_tos_and_pp_text);
106+
setUpTermsOfService(termsView);
105107
}
106108

107109
@Override
@@ -182,13 +184,13 @@ private void validateAndProceed() {
182184
}
183185
}
184186

185-
private void setUpTermsOfService(View view) {
186-
List<AuthUI.IdpConfig> providers = getFlowParams().providerInfo;
187-
if (providers.size() == 1) {
187+
private void setUpTermsOfService(TextView termsText) {
188+
FlowParameters flowParameters = getFlowParams();
189+
if (flowParameters.isSingleProviderFlow()) {
188190
PreambleHandler.setup(getContext(),
189-
getFlowParams(),
190-
R.string.fui_tos_and_pp,
191-
view.<TextView>findViewById(R.id.email_tos_and_pp_text));
191+
flowParameters,
192+
flowParameters.getGlobalTermsStringResource(),
193+
termsText);
192194
}
193195
}
194196
}

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

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import android.support.design.widget.TextInputLayout;
2323
import android.support.v4.app.FragmentTransaction;
2424
import android.support.v4.view.ViewCompat;
25+
import android.widget.TextView;
2526

2627
import com.firebase.ui.auth.AuthUI;
2728
import com.firebase.ui.auth.IdpResponse;
@@ -32,6 +33,7 @@
3233
import com.firebase.ui.auth.ui.idp.WelcomeBackIdpPrompt;
3334
import com.firebase.ui.auth.util.ExtraConstants;
3435
import com.firebase.ui.auth.util.data.ProviderUtils;
36+
import com.firebase.ui.auth.util.ui.PreambleHandler;
3537
import com.firebase.ui.auth.viewmodel.RequestCodes;
3638
import com.google.firebase.auth.EmailAuthProvider;
3739

@@ -69,6 +71,8 @@ protected void onCreate(@Nullable Bundle savedInstanceState) {
6971
.replace(R.id.fragment_register_email, fragment, CheckEmailFragment.TAG)
7072
.disallowAddToBackStack()
7173
.commit();
74+
75+
setUpTermsOfServiceFooter();
7276
}
7377

7478
@Override
@@ -130,4 +134,14 @@ private void setSlideAnimation() {
130134
// Make the next activity slide in
131135
overridePendingTransition(R.anim.fui_slide_in_right, R.anim.fui_slide_out_left);
132136
}
137+
138+
private void setUpTermsOfServiceFooter() {
139+
FlowParameters flowParameters = getFlowParams();
140+
if(!flowParameters.isSingleProviderFlow()) {
141+
PreambleHandler.setup(EmailActivity.this,
142+
flowParameters,
143+
flowParameters.getGlobalTermsFooterStringResource(),
144+
(TextView) findViewById(R.id.email_footer_tos_and_pp_text));
145+
}
146+
}
133147
}

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

Lines changed: 0 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,12 @@
66
import android.support.annotation.NonNull;
77
import android.support.annotation.Nullable;
88
import android.support.annotation.RestrictTo;
9-
import android.support.annotation.StringRes;
109
import android.support.design.widget.TextInputLayout;
1110
import android.text.TextUtils;
1211
import android.view.LayoutInflater;
1312
import android.view.View;
1413
import android.view.ViewGroup;
1514
import android.widget.EditText;
16-
import android.widget.TextView;
1715

1816
import com.firebase.ui.auth.AuthUI;
1917
import com.firebase.ui.auth.IdpResponse;
@@ -23,7 +21,6 @@
2321
import com.firebase.ui.auth.util.ExtraConstants;
2422
import com.firebase.ui.auth.util.data.ProviderUtils;
2523
import com.firebase.ui.auth.util.ui.ImeHelper;
26-
import com.firebase.ui.auth.util.ui.PreambleHandler;
2724
import com.firebase.ui.auth.util.ui.fieldvalidators.BaseValidator;
2825
import com.firebase.ui.auth.util.ui.fieldvalidators.EmailFieldValidator;
2926
import com.firebase.ui.auth.util.ui.fieldvalidators.NoOpValidator;
@@ -169,18 +166,6 @@ public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceStat
169166
}
170167
}
171168

172-
private @StringRes int getTermsStringResource() {
173-
boolean hasTos = !TextUtils.isEmpty(getFlowParams().termsOfServiceUrl);
174-
boolean hasPp = !TextUtils.isEmpty(getFlowParams().privacyPolicyUrl);
175-
if(hasTos && hasPp) {
176-
return R.string.fui_create_account_preamble_tos_and_pp;
177-
} else if(hasTos) {
178-
return R.string.fui_create_account_preamble_tos_only;
179-
} else {
180-
return R.string.fui_create_account_preamble_pp_only;
181-
}
182-
}
183-
184169
private void safeRequestFocus(final View v) {
185170
v.post(new Runnable() {
186171
@Override

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

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@
1414

1515
package com.firebase.ui.auth.ui.idp;
1616

17-
import android.app.Activity;
1817
import android.arch.lifecycle.ViewModelProvider;
1918
import android.arch.lifecycle.ViewModelProviders;
2019
import android.content.Context;
@@ -210,11 +209,12 @@ public void onClick(View view) {
210209
}
211210

212211
private void setUpTermsOfService() {
213-
TextView view = (TextView) findViewById(R.id.main_tos_and_pp);
212+
TextView termsText = (TextView) findViewById(R.id.main_tos_and_pp);
213+
FlowParameters flowParameters = getFlowParams();
214214
PreambleHandler.setup(AuthMethodPickerActivity.this,
215-
getFlowParams(),
216-
R.string.fui_tos_and_pp,
217-
view);
215+
flowParameters,
216+
flowParameters.getGlobalTermsStringResource(),
217+
termsText);
218218
}
219219

220220
@Override

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

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
import android.support.v7.app.AlertDialog;
2929
import android.text.TextUtils;
3030
import android.util.Log;
31+
import android.widget.TextView;
3132

3233
import com.firebase.ui.auth.IdpResponse;
3334
import com.firebase.ui.auth.R;
@@ -36,6 +37,7 @@
3637
import com.firebase.ui.auth.ui.AppCompatBase;
3738
import com.firebase.ui.auth.util.ExtraConstants;
3839
import com.firebase.ui.auth.util.FirebaseAuthError;
40+
import com.firebase.ui.auth.util.ui.PreambleHandler;
3941
import com.google.android.gms.tasks.OnFailureListener;
4042
import com.google.android.gms.tasks.OnSuccessListener;
4143
import com.google.firebase.FirebaseException;
@@ -103,6 +105,7 @@ protected void onCreate(@Nullable Bundle savedInstanceState) {
103105
.replace(R.id.fragment_verify_phone, fragment, VerifyPhoneNumberFragment.TAG)
104106
.disallowAddToBackStack()
105107
.commit();
108+
setUpTermsOfServiceFooter();
106109
}
107110

108111
@Override
@@ -406,4 +409,14 @@ private SubmitConfirmationCodeFragment getSubmitConfirmationCodeFragment() {
406409
return (SubmitConfirmationCodeFragment) getSupportFragmentManager().findFragmentByTag
407410
(SubmitConfirmationCodeFragment.TAG);
408411
}
412+
413+
private void setUpTermsOfServiceFooter() {
414+
FlowParameters flowParameters = getFlowParams();
415+
if(!flowParameters.isSingleProviderFlow()) {
416+
PreambleHandler.setup(PhoneActivity.this,
417+
flowParameters,
418+
flowParameters.getGlobalTermsFooterStringResource(),
419+
(TextView) findViewById(R.id.email_footer_tos_and_pp_text));
420+
}
421+
}
409422
}

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

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,6 @@
3636
import com.firebase.ui.auth.util.ExtraConstants;
3737
import com.firebase.ui.auth.util.ui.BucketedTextChangeListener;
3838
import com.firebase.ui.auth.util.ui.ImeHelper;
39-
import com.firebase.ui.auth.util.ui.PreambleHandler;
4039

4140
/**
4241
* Display confirmation code to verify phone numbers input in {{@link VerifyPhoneNumberFragment}}

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

Lines changed: 25 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import android.support.annotation.NonNull;
2323
import android.support.annotation.Nullable;
2424
import android.support.annotation.RestrictTo;
25+
import android.support.annotation.StringRes;
2526
import android.support.design.widget.TextInputLayout;
2627
import android.support.v4.app.FragmentActivity;
2728
import android.text.TextUtils;
@@ -33,7 +34,6 @@
3334
import android.widget.EditText;
3435
import android.widget.TextView;
3536

36-
import com.firebase.ui.auth.AuthUI;
3737
import com.firebase.ui.auth.R;
3838
import com.firebase.ui.auth.data.model.CountryInfo;
3939
import com.firebase.ui.auth.data.model.FlowParameters;
@@ -48,9 +48,7 @@
4848
import com.google.android.gms.auth.api.credentials.Credential;
4949
import com.google.android.gms.auth.api.credentials.CredentialPickerConfig;
5050
import com.google.android.gms.auth.api.credentials.HintRequest;
51-
import com.google.firebase.auth.PhoneAuthProvider;
5251

53-
import java.util.List;
5452
import java.util.Locale;
5553

5654
/**
@@ -116,7 +114,8 @@ public void onDonePressed() {
116114
@Override
117115
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
118116
super.onViewCreated(view, savedInstanceState);
119-
setUpTermsOfService(view);
117+
TextView termsText = view.<TextView>findViewById(R.id.send_sms_tos);
118+
setUpTermsOfService(termsText);
120119
}
121120

122121
@Override
@@ -274,18 +273,31 @@ private void setCountryCode(PhoneNumber phoneNumber) {
274273
}
275274
}
276275

277-
private void setUpTermsOfService(View view) {
278-
List<AuthUI.IdpConfig> providers = getFlowParams().providerInfo;
279-
if(providers.size() > 1) {
276+
private void setUpTermsOfService(TextView termsText) {
277+
FlowParameters flowParameters = getFlowParams();
278+
if (flowParameters.isSingleProviderFlow()) {
279+
PreambleHandler.setup(getContext(),
280+
flowParameters,
281+
R.string.fui_verify_phone_number,
282+
getTermsSmsStringResource(),
283+
termsText);
284+
} else {
280285
final String verifyPhoneButtonText = getString(R.string.fui_verify_phone_number);
281-
final String terms = getString(R.string.fui_sms_terms_of_service, verifyPhoneButtonText);
286+
final String terms = getString(R.string.fui_sms_terms_of_service,
287+
verifyPhoneButtonText);
282288
mSmsTermsText.setText(terms);
289+
}
290+
}
291+
292+
private @StringRes int getTermsSmsStringResource() {
293+
boolean hasTos = !TextUtils.isEmpty(getFlowParams().termsOfServiceUrl);
294+
boolean hasPp = !TextUtils.isEmpty(getFlowParams().privacyPolicyUrl);
295+
if (hasTos && hasPp) {
296+
return R.string.fui_sms_terms_of_service_and_privacy_policy_extended;
297+
} else if (hasTos) {
298+
return R.string.fui_sms_terms_of_service_only_extended;
283299
} else {
284-
PreambleHandler.setup(getContext(),
285-
getFlowParams(),
286-
R.string.fui_verify_phone_number,
287-
R.string.fui_sms_terms_of_service_extended,
288-
view.<TextView>findViewById(R.id.send_sms_tos));
300+
return R.string.fui_sms_privacy_policy_only_extended;
289301
}
290302
}
291303

auth/src/main/java/com/firebase/ui/auth/util/ui/PreambleHandler.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ public static void setup(Context context,
5656
@StringRes int textViewText,
5757
TextView textView) {
5858
PreambleHandler handler = new PreambleHandler(context, parameters, buttonText);
59-
handler.setupPreamble(textViewText);
59+
handler.setUpPreamble(textViewText);
6060
handler.setPreamble(textView);
6161
}
6262

@@ -65,7 +65,7 @@ public static void setup(Context context,
6565
@StringRes int textViewText,
6666
TextView textView) {
6767
PreambleHandler handler = new PreambleHandler(context, parameters);
68-
handler.setupPreamble(textViewText);
68+
handler.setUpPreamble(textViewText);
6969
handler.setPreamble(textView);
7070
}
7171

@@ -74,7 +74,7 @@ private void setPreamble(TextView textView) {
7474
textView.setText(mBuilder);
7575
}
7676

77-
private void setupPreamble(@StringRes int textViewText) {
77+
private void setUpPreamble(@StringRes int textViewText) {
7878
String withTargets = (mButtonText == NO_BUTTON) ? getPreambleStringWithTargetsNoButton(
7979
textViewText) : getPreambleStringWithTargets(textViewText);
8080
if (withTargets == null) {

auth/src/main/res/layout/fui_activity_register_email.xml

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,14 @@
55
android:id="@+id/fragment_register_email"
66
android:layout_width="match_parent"
77
android:layout_height="match_parent"
8-
tools:ignore="MergeRootFrame" />
8+
tools:ignore="MergeRootFrame" >
9+
10+
<TextView
11+
android:id="@+id/email_footer_tos_and_pp_text"
12+
android:layout_width="wrap_content"
13+
android:layout_height="wrap_content"
14+
android:layout_marginTop="@dimen/fui_field_padding_vert"
15+
android:layout_gravity="bottom|right"
16+
tools:text="Terms and Privacy Policy Footer" />
17+
</FrameLayout>
18+

auth/src/main/res/layout/fui_activity_register_phone.xml

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,14 @@
55
android:id="@+id/fragment_verify_phone"
66
android:layout_width="match_parent"
77
android:layout_height="match_parent"
8-
tools:ignore="MergeRootFrame" />
8+
tools:ignore="MergeRootFrame" >
9+
10+
<TextView
11+
android:id="@+id/email_footer_tos_and_pp_text"
12+
android:layout_width="wrap_content"
13+
android:layout_height="wrap_content"
14+
android:layout_marginTop="@dimen/fui_field_padding_vert"
15+
android:layout_gravity="bottom|right"
16+
tools:text="Terms and Privacy Policy Footer" />
17+
</FrameLayout>
18+

auth/src/main/res/layout/fui_check_email_layout.xml

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -28,18 +28,19 @@
2828

2929
</android.support.design.widget.TextInputLayout>
3030

31+
<Button
32+
android:id="@+id/button_next"
33+
style="@style/FirebaseUI.Button"
34+
android:text="@string/fui_next_default" />
35+
3136
<TextView
3237
android:id="@+id/email_tos_and_pp_text"
3338
style="@style/FirebaseUI.Text.BodyText"
3439
android:layout_width="match_parent"
3540
android:layout_height="wrap_content"
3641
android:layout_marginTop="@dimen/fui_field_padding_vert"
37-
android:textIsSelectable="false" />
38-
39-
<Button
40-
android:id="@+id/button_next"
41-
style="@style/FirebaseUI.Button"
42-
android:text="@string/fui_next_default" />
42+
android:textIsSelectable="false"
43+
tools:text="Terms and Privacy Policy" />
4344

4445
</LinearLayout>
4546

0 commit comments

Comments
 (0)