Skip to content

Commit e9df5b5

Browse files
authored
Version 6.2.1
Version 6.2.1
2 parents 2f95eb9 + 485453f commit e9df5b5

38 files changed

+310
-181
lines changed

.github/workflows/android.yml

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
name: Android CI
2+
3+
on:
4+
- pull_request
5+
- push
6+
7+
jobs:
8+
build:
9+
runs-on: ubuntu-latest
10+
steps:
11+
- uses: actions/checkout@v2
12+
- name: set up JDK 1.8
13+
uses: actions/setup-java@v1
14+
with:
15+
java-version: 1.8
16+
- name: Build with Gradle
17+
run: ./scripts/build.sh
18+
- name: Print Logs
19+
if: failure()
20+
run: ./scripts/print_build_logs.sh

.github/workflows/artifactory.yml

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
name: Artifactory
2+
3+
on:
4+
push:
5+
branches:
6+
- 'version-*-dev'
7+
8+
jobs:
9+
artifactory:
10+
runs-on: ubuntu-latest
11+
env:
12+
BINTRAY_USER: ${{ secrets.BINTRAY_USER }}
13+
BINTRAY_KEY: ${{ secrets.BINTRAY_KEY }}
14+
steps:
15+
- uses: actions/checkout@v2
16+
- name: set up JDK 1.8
17+
uses: actions/setup-java@v1
18+
with:
19+
java-version: 1.8
20+
- name: Publish to Artifactory
21+
run: ./scripts/artifactory.sh

.travis.yml

Lines changed: 0 additions & 45 deletions
This file was deleted.

README.md

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
[![FirebaseOpensource.com](https://img.shields.io/badge/Docs-firebaseopensource.com-orange.svg)](
44
https://firebaseopensource.com/projects/firebase/firebaseui-android
55
)
6-
[![Build Status](https://travis-ci.org/firebase/FirebaseUI-Android.svg?branch=master)](https://travis-ci.org/firebase/FirebaseUI-Android)
6+
[![Actions Status][gh-actions-badge]][gh-actions]
77

88
FirebaseUI is an open-source library for Android that allows you to
99
quickly connect common UI elements to [Firebase](https://firebase.google.com) APIs.
@@ -48,16 +48,16 @@ libraries.
4848
```groovy
4949
dependencies {
5050
// FirebaseUI for Firebase Realtime Database
51-
implementation 'com.firebaseui:firebase-ui-database:6.2.0'
51+
implementation 'com.firebaseui:firebase-ui-database:6.2.1'
5252
5353
// FirebaseUI for Cloud Firestore
54-
implementation 'com.firebaseui:firebase-ui-firestore:6.2.0'
54+
implementation 'com.firebaseui:firebase-ui-firestore:6.2.1'
5555
5656
// FirebaseUI for Firebase Auth
57-
implementation 'com.firebaseui:firebase-ui-auth:6.2.0'
57+
implementation 'com.firebaseui:firebase-ui-auth:6.2.1'
5858
5959
// FirebaseUI for Cloud Storage
60-
implementation 'com.firebaseui:firebase-ui-storage:6.2.0'
60+
implementation 'com.firebaseui:firebase-ui-storage:6.2.1'
6161
}
6262
```
6363

@@ -241,3 +241,6 @@ accept your pull requests.
241241
you are contributing.
242242
1. Ensure that your code has an appropriate set of unit tests which all pass.
243243
1. Submit a pull request targeting the latest dev branch.
244+
245+
[gh-actions]: https://github.com/firebase/FirebaseUI-Android/actions
246+
[gh-actions-badge]: https://github.com/firebase/FirebaseUI-Android/workflows/Android%20CI/badge.svg

app/build.gradle.kts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,6 @@ android {
3232
}
3333

3434
dependencies {
35-
implementation(Config.Libs.Firebase.core)
3635
implementation(Config.Libs.Androidx.design)
3736
implementation(Config.Libs.Androidx.multidex)
3837

app/src/main/java/com/firebase/uidemo/FirebaseUIDemo.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,14 @@
22

33
import com.squareup.leakcanary.LeakCanary;
44

5+
import androidx.appcompat.app.AppCompatDelegate;
56
import androidx.multidex.MultiDexApplication;
67

78
public class FirebaseUIDemo extends MultiDexApplication {
9+
static {
10+
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_AUTO_BATTERY);
11+
}
12+
813
@Override
914
public void onCreate() {
1015
super.onCreate();

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -347,7 +347,7 @@ private void startSignedInActivity(@Nullable IdpResponse response) {
347347
@OnClick({R.id.default_theme, R.id.purple_theme, R.id.green_theme, R.id.dark_theme})
348348
public void toggleDarkTheme() {
349349
int mode = mDarkTheme.isChecked() ?
350-
AppCompatDelegate.MODE_NIGHT_YES : AppCompatDelegate.MODE_NIGHT_NO;
350+
AppCompatDelegate.MODE_NIGHT_YES : AppCompatDelegate.MODE_NIGHT_AUTO_BATTERY;
351351
AppCompatDelegate.setDefaultNightMode(mode);
352352
getDelegate().setLocalNightMode(mode);
353353
}

auth/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ Gradle, add the dependency:
6565
```groovy
6666
dependencies {
6767
// ...
68-
implementation 'com.firebaseui:firebase-ui-auth:6.2.0'
68+
implementation 'com.firebaseui:firebase-ui-auth:6.2.1'
6969
7070
// Required only if Facebook login support is required
7171
// Find the latest Facebook SDK releases here: https://goo.gl/Ce5L94

auth/build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ dependencies {
3434
implementation(Config.Libs.Androidx.lifecycleExtensions)
3535
annotationProcessor(Config.Libs.Androidx.lifecycleCompiler)
3636

37+
implementation(platform(Config.Libs.Firebase.bom))
3738
api(Config.Libs.Firebase.auth)
3839
api(Config.Libs.PlayServices.auth)
3940

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -487,7 +487,6 @@ public SignInIntentBuilder createSignInIntentBuilder() {
487487
ANONYMOUS_PROVIDER,
488488
EmailAuthProvider.EMAIL_LINK_SIGN_IN_METHOD
489489
})
490-
491490
@Retention(RetentionPolicy.SOURCE)
492491
public @interface SupportedProvider {
493492
}
@@ -996,7 +995,8 @@ public GoogleBuilder() {
996995
@NonNull
997996
public GoogleBuilder setScopes(@NonNull List<String> scopes) {
998997
GoogleSignInOptions.Builder builder =
999-
new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN);
998+
new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
999+
.requestEmail();
10001000
for (String scope : scopes) {
10011001
builder.requestScopes(new Scope(scope));
10021002
}

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import com.firebase.ui.auth.IdpResponse;
2121
import com.firebase.ui.auth.data.model.Resource;
2222
import com.firebase.ui.auth.data.model.User;
23+
import com.firebase.ui.auth.data.model.UserCancellationException;
2324
import com.firebase.ui.auth.ui.HelperActivityBase;
2425
import com.firebase.ui.auth.util.ExtraConstants;
2526
import com.firebase.ui.auth.viewmodel.ProviderSignInBase;
@@ -111,7 +112,7 @@ public void onSuccess(LoginResult result) {
111112

112113
@Override
113114
public void onCancel() {
114-
onError(new FacebookException());
115+
setResult(Resource.<IdpResponse>forFailure(new UserCancellationException()));
115116
}
116117

117118
@Override

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

Lines changed: 23 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import com.firebase.ui.auth.data.model.UserCancellationException;
2323
import com.firebase.ui.auth.ui.HelperActivityBase;
2424
import com.firebase.ui.auth.util.ExtraConstants;
25+
import com.firebase.ui.auth.util.FirebaseAuthError;
2526
import com.firebase.ui.auth.util.data.AuthOperationManager;
2627
import com.firebase.ui.auth.util.data.ProviderUtils;
2728
import com.firebase.ui.auth.viewmodel.ProviderSignInBase;
@@ -32,6 +33,7 @@
3233
import com.google.firebase.auth.AuthCredential;
3334
import com.google.firebase.auth.AuthResult;
3435
import com.google.firebase.auth.FirebaseAuth;
36+
import com.google.firebase.auth.FirebaseAuthException;
3537
import com.google.firebase.auth.FirebaseAuthUserCollisionException;
3638
import com.google.firebase.auth.FirebaseUser;
3739
import com.google.firebase.auth.OAuthCredential;
@@ -91,17 +93,27 @@ public void onSuccess(@NonNull AuthResult authResult) {
9193
new OnFailureListener() {
9294
@Override
9395
public void onFailure(@NonNull Exception e) {
94-
if (e instanceof FirebaseAuthUserCollisionException) {
95-
FirebaseAuthUserCollisionException collisionException =
96-
(FirebaseAuthUserCollisionException) e;
97-
98-
setResult(Resource.<IdpResponse>forFailure(
99-
new FirebaseUiUserCollisionException(
100-
ErrorCodes.ERROR_GENERIC_IDP_RECOVERABLE_ERROR,
101-
"Recoverable error.",
102-
provider.getProviderId(),
103-
collisionException.getEmail(),
104-
collisionException.getUpdatedCredential())));
96+
if (e instanceof FirebaseAuthException) {
97+
FirebaseAuthError error =
98+
FirebaseAuthError.fromException((FirebaseAuthException) e);
99+
100+
if (e instanceof FirebaseAuthUserCollisionException) {
101+
FirebaseAuthUserCollisionException collisionException =
102+
(FirebaseAuthUserCollisionException) e;
103+
104+
setResult(Resource.<IdpResponse>forFailure(
105+
new FirebaseUiUserCollisionException(
106+
ErrorCodes.ERROR_GENERIC_IDP_RECOVERABLE_ERROR,
107+
"Recoverable error.",
108+
provider.getProviderId(),
109+
collisionException.getEmail(),
110+
collisionException.getUpdatedCredential())));
111+
} else if (error == FirebaseAuthError.ERROR_WEB_CONTEXT_CANCELED) {
112+
setResult(Resource.<IdpResponse>forFailure(
113+
new UserCancellationException()));
114+
} else {
115+
setResult(Resource.<IdpResponse>forFailure(e));
116+
}
105117
} else {
106118
setResult(Resource.<IdpResponse>forFailure(e));
107119
}

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,7 @@ public void onClick(DialogInterface dialog, int id) {
128128

129129
@Override
130130
public void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
131+
super.onActivityResult(requestCode, resultCode, data);
131132
if (requestCode == RequestCodes.EMAIL_LINK_PROMPT_FOR_EMAIL_FLOW
132133
|| requestCode == RequestCodes.EMAIL_LINK_CROSS_DEVICE_LINKING_FLOW) {
133134
IdpResponse response = IdpResponse.fromResultIntent(data);

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.firebase.ui.auth.ui.email;
22

3+
import android.annotation.SuppressLint;
34
import android.os.Build;
45
import android.os.Bundle;
56
import android.text.SpannableStringBuilder;
@@ -22,8 +23,6 @@
2223
import androidx.annotation.RestrictTo;
2324
import androidx.fragment.app.FragmentActivity;
2425

25-
import static android.text.Layout.JUSTIFICATION_MODE_INTER_WORD;
26-
2726
/**
2827
* Fragment that tells the user that a linking flow cannot be completed as they have opened the
2928
* email link on a different device.
@@ -52,6 +51,7 @@ public View onCreateView(@NonNull LayoutInflater inflater,
5251

5352
@SuppressWarnings("WrongConstant")
5453
@Override
54+
@SuppressLint("WrongConstant")
5555
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
5656
mProgressBar = view.findViewById(R.id.top_progress_bar);
5757
mContinueButton = view.findViewById(R.id.button_continue);
@@ -73,7 +73,7 @@ public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceStat
7373

7474
// Justifies the text
7575
if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
76-
body.setJustificationMode(JUSTIFICATION_MODE_INTER_WORD);
76+
body.setJustificationMode(android.text.Layout.JUSTIFICATION_MODE_INTER_WORD);
7777
}
7878

7979
TextView footerText = view.findViewById(R.id.email_footer_tos_and_pp_text);

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

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.firebase.ui.auth.ui.email;
22

3+
import android.annotation.SuppressLint;
34
import android.content.Context;
45
import android.content.Intent;
56
import android.os.Build;
@@ -22,8 +23,6 @@
2223
import androidx.annotation.Nullable;
2324
import androidx.annotation.RestrictTo;
2425

25-
import static android.text.Layout.JUSTIFICATION_MODE_INTER_WORD;
26-
2726
@RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
2827
public class WelcomeBackEmailLinkPrompt extends AppCompatBase implements View.OnClickListener {
2928

@@ -85,7 +84,7 @@ private void setBodyText() {
8584
body.setText(spannableStringBuilder);
8685
// Justifies the text
8786
if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
88-
body.setJustificationMode(JUSTIFICATION_MODE_INTER_WORD);
87+
body.setJustificationMode(android.text.Layout.JUSTIFICATION_MODE_INTER_WORD);
8988
}
9089
}
9190

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

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,11 +28,13 @@
2828

2929
import com.firebase.ui.auth.ErrorCodes;
3030
import com.firebase.ui.auth.FirebaseAuthAnonymousUpgradeException;
31+
import com.firebase.ui.auth.FirebaseUiException;
3132
import com.firebase.ui.auth.IdpResponse;
3233
import com.firebase.ui.auth.R;
3334
import com.firebase.ui.auth.data.model.FlowParameters;
3435
import com.firebase.ui.auth.ui.AppCompatBase;
3536
import com.firebase.ui.auth.util.ExtraConstants;
37+
import com.firebase.ui.auth.util.FirebaseAuthError;
3638
import com.firebase.ui.auth.util.data.PrivacyDisclosureUtils;
3739
import com.firebase.ui.auth.util.data.ProviderUtils;
3840
import com.firebase.ui.auth.util.ui.ImeHelper;
@@ -41,7 +43,10 @@
4143
import com.firebase.ui.auth.viewmodel.email.WelcomeBackPasswordHandler;
4244
import com.google.android.material.textfield.TextInputLayout;
4345
import com.google.firebase.auth.AuthCredential;
46+
import com.google.firebase.auth.FirebaseAuth;
47+
import com.google.firebase.auth.FirebaseAuthException;
4448
import com.google.firebase.auth.FirebaseAuthInvalidCredentialsException;
49+
import com.google.firebase.auth.FirebaseAuthInvalidUserException;
4550

4651
import androidx.annotation.NonNull;
4752
import androidx.annotation.Nullable;
@@ -120,9 +125,21 @@ protected void onFailure(@NonNull Exception e) {
120125
if (e instanceof FirebaseAuthAnonymousUpgradeException) {
121126
IdpResponse response = ((FirebaseAuthAnonymousUpgradeException) e).getResponse();
122127
finish(ErrorCodes.ANONYMOUS_UPGRADE_MERGE_CONFLICT, response.toIntent());
123-
} else {
124-
mPasswordLayout.setError(getString(getErrorMessage(e)));
128+
return;
125129
}
130+
131+
if (e instanceof FirebaseAuthException) {
132+
FirebaseAuthException authEx = (FirebaseAuthException) e;
133+
FirebaseAuthError error = FirebaseAuthError.fromException(authEx);
134+
if (error == FirebaseAuthError.ERROR_USER_DISABLED) {
135+
IdpResponse resp = IdpResponse.from(
136+
new FirebaseUiException(ErrorCodes.ERROR_USER_DISABLED));
137+
finish(RESULT_CANCELED, resp.toIntent());
138+
return;
139+
}
140+
}
141+
142+
mPasswordLayout.setError(getString(getErrorMessage(e)));
126143
}
127144
});
128145

0 commit comments

Comments
 (0)