Skip to content

Commit f9d4ab6

Browse files
authored
Bugfixes for older versions of Android (#382)
* Fixes for older Android devices * fix/rework SmartLock tests * review feedback * Fix tests * fix more tests
1 parent 2b9020b commit f9d4ab6

15 files changed

+206
-189
lines changed

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

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,14 +19,18 @@
1919
import android.content.Context;
2020
import android.content.Intent;
2121
import android.support.annotation.NonNull;
22+
import android.support.annotation.Nullable;
2223
import android.support.annotation.StringRes;
2324

25+
import com.firebase.ui.auth.IdpResponse;
26+
import com.firebase.ui.auth.util.SmartLock;
2427
import com.google.android.gms.auth.api.Auth;
2528
import com.google.android.gms.auth.api.credentials.CredentialsApi;
2629
import com.google.firebase.FirebaseApp;
2730
import com.google.firebase.auth.FirebaseAuth;
2831
import com.google.firebase.auth.FirebaseUser;
2932

33+
import static android.app.Activity.RESULT_OK;
3034
import static com.firebase.ui.auth.util.Preconditions.checkNotNull;
3135

3236
public class ActivityHelper {
@@ -106,4 +110,42 @@ public static Intent createBaseIntent(
106110
.putExtra(ExtraConstants.EXTRA_FLOW_PARAMS,
107111
checkNotNull(flowParams, "flowParams cannot be null"));
108112
}
113+
114+
public SmartLock getSmartLockInstance(AppCompatBase activity, String tag) {
115+
return SmartLock.getInstance(activity, tag);
116+
}
117+
118+
public void saveCredentialsOrFinish(
119+
@Nullable SmartLock smartLock,
120+
AppCompatBase activity,
121+
FirebaseUser firebaseUser,
122+
@NonNull IdpResponse response) {
123+
saveCredentialsOrFinish(smartLock, activity, firebaseUser, null, response);
124+
}
125+
126+
public void saveCredentialsOrFinish(
127+
@Nullable SmartLock smartLock,
128+
AppCompatBase activity,
129+
FirebaseUser firebaseUser,
130+
@NonNull String password) {
131+
saveCredentialsOrFinish(smartLock, activity, firebaseUser, password, null);
132+
}
133+
134+
private void saveCredentialsOrFinish(
135+
@Nullable SmartLock smartLock,
136+
AppCompatBase activity,
137+
FirebaseUser firebaseUser,
138+
@Nullable String password,
139+
@Nullable IdpResponse response) {
140+
if (smartLock == null) {
141+
activity.finish(RESULT_OK, new Intent());
142+
} else {
143+
smartLock.saveCredentialsOrFinish(
144+
activity,
145+
this,
146+
firebaseUser,
147+
password,
148+
response);
149+
}
150+
}
109151
}

auth/src/main/java/com/firebase/ui/auth/ui/account_link/WelcomeBackPasswordPrompt.java

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import android.graphics.Typeface;
2020
import android.os.Bundle;
2121
import android.support.annotation.NonNull;
22+
import android.support.annotation.Nullable;
2223
import android.support.design.widget.TextInputLayout;
2324
import android.text.Spannable;
2425
import android.text.SpannableStringBuilder;
@@ -28,7 +29,6 @@
2829
import android.widget.EditText;
2930
import android.widget.TextView;
3031

31-
import com.firebase.ui.auth.AuthUI;
3232
import com.firebase.ui.auth.IdpResponse;
3333
import com.firebase.ui.auth.R;
3434
import com.firebase.ui.auth.ui.ActivityHelper;
@@ -58,12 +58,14 @@ public class WelcomeBackPasswordPrompt extends AppCompatBase implements View.OnC
5858
private TextInputLayout mPasswordLayout;
5959
private EditText mPasswordField;
6060
private IdpResponse mIdpResponse;
61+
@Nullable
62+
private SmartLock mSmartLock;
6163

6264
@Override
6365
protected void onCreate(Bundle savedInstanceState) {
6466
super.onCreate(savedInstanceState);
6567
setContentView(R.layout.welcome_back_password_prompt_layout);
66-
68+
mSmartLock = SmartLock.getInstance(WelcomeBackPasswordPrompt.this, TAG);
6769
mPasswordLayout = (TextInputLayout) findViewById(R.id.password_layout);
6870
mPasswordField = (EditText) findViewById(R.id.password);
6971

@@ -139,15 +141,11 @@ public void onSuccess(AuthResult authResult) {
139141
new OnSuccessListener<AuthResult>() {
140142
@Override
141143
public void onSuccess(AuthResult authResult) {
142-
SmartLock
143-
.getInstance(WelcomeBackPasswordPrompt.this,
144-
TAG)
145-
.saveCredentialsOrFinish(
146-
WelcomeBackPasswordPrompt.this,
147-
mActivityHelper,
148-
authResult.getUser(),
149-
password,
150-
null);
144+
mActivityHelper.saveCredentialsOrFinish(
145+
mSmartLock,
146+
WelcomeBackPasswordPrompt.this,
147+
authResult.getUser(),
148+
password);
151149
}
152150
});
153151
}

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

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import android.net.Uri;
2020
import android.os.Bundle;
2121
import android.support.annotation.NonNull;
22+
import android.support.annotation.Nullable;
2223
import android.support.design.widget.TextInputLayout;
2324
import android.support.v4.content.ContextCompat;
2425
import android.text.SpannableStringBuilder;
@@ -30,8 +31,6 @@
3031
import android.widget.ImageView;
3132
import android.widget.TextView;
3233

33-
import com.firebase.ui.auth.AuthUI;
34-
import com.firebase.ui.auth.IdpResponse;
3534
import com.firebase.ui.auth.R;
3635
import com.firebase.ui.auth.ui.ActivityHelper;
3736
import com.firebase.ui.auth.ui.AppCompatBase;
@@ -66,12 +65,16 @@ public class RegisterEmailActivity extends AppCompatBase implements View.OnClick
6665
private EmailFieldValidator mEmailFieldValidator;
6766
private PasswordFieldValidator mPasswordFieldValidator;
6867
private RequiredFieldValidator mNameValidator;
68+
@Nullable
69+
private SmartLock mSmartLock;
6970

7071
@Override
7172
protected void onCreate(Bundle savedInstanceState) {
7273
super.onCreate(savedInstanceState);
7374
setContentView(R.layout.register_email_layout);
7475

76+
mSmartLock = mActivityHelper.getSmartLockInstance(this, TAG);
77+
7578
String email = getIntent().getStringExtra(ExtraConstants.EXTRA_EMAIL);
7679
mEmailEditText = (EditText) findViewById(R.id.email);
7780

@@ -156,13 +159,11 @@ public void onComplete(@NonNull Task<Void> task) {
156159
// This executes even if the name change fails, since
157160
// the account creation succeeded and we want to save
158161
// the credential to SmartLock (if enabled).
159-
SmartLock.getInstance(RegisterEmailActivity.this, TAG)
160-
.saveCredentialsOrFinish(
161-
RegisterEmailActivity.this,
162-
mActivityHelper,
163-
firebaseUser,
164-
password,
165-
null);
162+
mActivityHelper.saveCredentialsOrFinish(
163+
mSmartLock,
164+
RegisterEmailActivity.this,
165+
firebaseUser,
166+
password);
166167
}
167168
});
168169
}

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

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import android.content.Intent;
1919
import android.os.Bundle;
2020
import android.support.annotation.NonNull;
21+
import android.support.annotation.Nullable;
2122
import android.support.design.widget.TextInputLayout;
2223
import android.util.TypedValue;
2324
import android.view.View;
@@ -26,8 +27,6 @@
2627
import android.widget.ImageView;
2728
import android.widget.TextView;
2829

29-
import com.firebase.ui.auth.AuthUI;
30-
import com.firebase.ui.auth.IdpResponse;
3130
import com.firebase.ui.auth.R;
3231
import com.firebase.ui.auth.ui.ActivityHelper;
3332
import com.firebase.ui.auth.ui.AppCompatBase;
@@ -51,12 +50,16 @@ public class SignInActivity extends AppCompatBase implements View.OnClickListene
5150
private EditText mPasswordEditText;
5251
private EmailFieldValidator mEmailValidator;
5352
private RequiredFieldValidator mPasswordValidator;
53+
@Nullable
54+
private SmartLock mSmartLock;
5455

5556
@Override
5657
protected void onCreate(Bundle savedInstanceState) {
5758
super.onCreate(savedInstanceState);
5859
setContentView(R.layout.sign_in_layout);
5960

61+
mSmartLock = mActivityHelper.getSmartLockInstance(this, TAG);
62+
6063
String email = getIntent().getStringExtra(ExtraConstants.EXTRA_EMAIL);
6164

6265
mEmailEditText = (EditText) findViewById(R.id.email);
@@ -100,12 +103,11 @@ private void signIn(final String email, final String password) {
100103
@Override
101104
public void onSuccess(AuthResult authResult) {
102105
// Save credential in SmartLock (if enabled)
103-
SmartLock.getInstance(SignInActivity.this, TAG)
104-
.saveCredentialsOrFinish(SignInActivity.this,
105-
mActivityHelper,
106-
authResult.getUser(),
107-
password,
108-
null);
106+
mActivityHelper.saveCredentialsOrFinish(
107+
mSmartLock,
108+
SignInActivity.this,
109+
authResult.getUser(),
110+
password);
109111
}
110112
})
111113
.addOnFailureListener(new OnFailureListener() {

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

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
import android.content.Context;
1818
import android.content.Intent;
1919
import android.os.Bundle;
20+
import android.support.annotation.Nullable;
2021
import android.util.Log;
2122
import android.view.View;
2223
import android.widget.ImageView;
@@ -63,12 +64,14 @@ public class AuthMethodPickerActivity extends IDPBaseActivity
6364
private static final int RC_EMAIL_FLOW = 2;
6465
private static final int RC_ACCOUNT_LINK = 3;
6566
private ArrayList<IdpProvider> mIdpProviders;
67+
@Nullable
68+
private SmartLock mSmartLock;
6669

6770
@Override
6871
protected void onCreate(Bundle savedInstanceState) {
6972
super.onCreate(savedInstanceState);
7073
setContentView(R.layout.auth_method_picker_layout);
71-
74+
mSmartLock = mActivityHelper.getSmartLockInstance(this, TAG);
7275
findViewById(R.id.email_provider).setOnClickListener(this);
7376

7477
populateIdpList(mActivityHelper.getFlowParams().providerInfo);
@@ -167,7 +170,7 @@ public void onSuccess(final IdpResponse response) {
167170
.addOnCompleteListener(new CredentialSignInHandler(
168171
AuthMethodPickerActivity.this,
169172
mActivityHelper,
170-
SmartLock.getInstance(AuthMethodPickerActivity.this, TAG),
173+
mSmartLock,
171174
RC_ACCOUNT_LINK,
172175
response));
173176
}

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

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
package com.firebase.ui.auth.ui.idp;
1616

1717
import android.support.annotation.NonNull;
18+
import android.support.annotation.Nullable;
1819
import android.util.Log;
1920

2021
import com.firebase.ui.auth.IdpResponse;
@@ -40,14 +41,14 @@ public class CredentialSignInHandler implements OnCompleteListener<AuthResult> {
4041

4142
private AppCompatBase mActivity;
4243
private ActivityHelper mActivityHelper;
43-
private SmartLock mSmartLock;
44+
@Nullable private SmartLock mSmartLock;
4445
private IdpResponse mResponse;
4546
private int mAccountLinkResultCode;
4647

4748
public CredentialSignInHandler(
4849
AppCompatBase activity,
4950
ActivityHelper activityHelper,
50-
SmartLock smartLock,
51+
@Nullable SmartLock smartLock,
5152
int accountLinkResultCode,
5253
IdpResponse response) {
5354
mActivity = activity;
@@ -61,11 +62,11 @@ public CredentialSignInHandler(
6162
public void onComplete(@NonNull Task<AuthResult> task) {
6263
if (task.isSuccessful()) {
6364
FirebaseUser firebaseUser = task.getResult().getUser();
64-
mSmartLock.saveCredentialsOrFinish(mActivity,
65-
mActivityHelper,
66-
firebaseUser,
67-
null /* password */,
68-
mResponse);
65+
mActivityHelper.saveCredentialsOrFinish(
66+
mSmartLock,
67+
mActivity,
68+
firebaseUser,
69+
mResponse);
6970
} else {
7071
if (task.getException() instanceof FirebaseAuthUserCollisionException) {
7172
final String email = mResponse.getEmail();

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

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
import android.content.Context;
1818
import android.content.Intent;
1919
import android.os.Bundle;
20+
import android.support.annotation.Nullable;
2021
import com.firebase.ui.auth.AuthUI.IdpConfig;
2122
import com.firebase.ui.auth.IdpResponse;
2223
import com.firebase.ui.auth.provider.FacebookProvider;
@@ -44,11 +45,13 @@ public class IdpSignInContainerActivity extends IDPBaseActivity implements IdpCa
4445
private IdpProvider mIdpProvider;
4546
private String mProvider;
4647
private String mEmail;
48+
@Nullable
49+
private SmartLock mSmartLock;
4750

4851
@Override
4952
protected void onCreate(Bundle savedInstanceState) {
5053
super.onCreate(savedInstanceState);
51-
54+
mSmartLock = mActivityHelper.getSmartLockInstance(this, TAG);
5255
mProvider = getIntent().getStringExtra(ExtraConstants.EXTRA_PROVIDER);
5356
mEmail = getIntent().getStringExtra(ExtraConstants.EXTRA_EMAIL);
5457
IdpConfig providerConfig = null;
@@ -87,7 +90,7 @@ public void onSuccess(final IdpResponse response) {
8790
.addOnCompleteListener(new CredentialSignInHandler(
8891
IdpSignInContainerActivity.this,
8992
mActivityHelper,
90-
SmartLock.getInstance(IdpSignInContainerActivity.this, TAG),
93+
mSmartLock,
9194
RC_WELCOME_BACK_IDP,
9295
response));
9396
}

0 commit comments

Comments
 (0)