Skip to content

Commit 1e8b737

Browse files
committed
Merge remote-tracking branch 'github/master' into version-7.2.0-dev
2 parents 59e6a94 + 3d578ef commit 1e8b737

40 files changed

+769
-844
lines changed

.github/workflows/artifactory.yml

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

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -209,7 +209,7 @@ You can download FirebaseUI and install it locally by cloning this
209209
repository and running:
210210

211211
```sh
212-
./gradlew :library:prepareArtifacts :library:publishAllToMavenLocal
212+
./gradlew :library:prepareArtifacts publishToMavenLocal
213213
```
214214

215215
### Contributor License Agreements

app/build.gradle.kts

Lines changed: 37 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,23 @@
11
// NOTE: this project uses Gradle Kotlin DSL. More common build.gradle instructions can be found in
22
// the main README.
3+
plugins {
4+
id("com.android.application")
5+
}
36

47
android {
8+
compileSdkVersion(Config.SdkVersions.compile)
9+
10+
defaultConfig {
11+
minSdkVersion(Config.SdkVersions.min)
12+
targetSdkVersion(Config.SdkVersions.target)
13+
14+
versionName = Config.version
15+
versionCode = 1
16+
17+
resourcePrefix("fui_")
18+
vectorDrawables.useSupportLibrary = true
19+
}
20+
521
defaultConfig {
622
multiDexEnabled = true
723
}
@@ -22,12 +38,31 @@ android {
2238
}
2339

2440
lintOptions {
41+
// Common lint options across all modules
42+
disable(
43+
"IconExpectedSize",
44+
"InvalidPackage", // Firestore uses GRPC which makes lint mad
45+
"NewerVersionAvailable", "GradleDependency", // For reproducible builds
46+
"SelectableText", "SyntheticAccessor" // We almost never care about this
47+
)
48+
49+
// Module-specific
2550
disable("ResourceName", "MissingTranslation", "DuplicateStrings")
51+
52+
isCheckAllWarnings = true
53+
isWarningsAsErrors = true
54+
isAbortOnError = true
55+
56+
baselineFile = file("$rootDir/library/quality/lint-baseline.xml")
2657
}
2758

2859
compileOptions {
29-
setSourceCompatibility(JavaVersion.VERSION_1_8)
30-
setTargetCompatibility(JavaVersion.VERSION_1_8)
60+
sourceCompatibility = JavaVersion.VERSION_1_8
61+
targetCompatibility = JavaVersion.VERSION_1_8
62+
}
63+
64+
buildFeatures {
65+
viewBinding = true
3166
}
3267
}
3368

@@ -55,9 +90,7 @@ dependencies {
5590
// They are used to make some aspects of the demo app implementation simpler for
5691
// demonstrative purposes, and you may find them useful in your own apps; YMMV.
5792
implementation(Config.Libs.Misc.permissions)
58-
implementation(Config.Libs.Misc.butterKnife)
5993
implementation(Config.Libs.Androidx.constraint)
60-
annotationProcessor(Config.Libs.Misc.butterKnifeCompiler)
6194
debugImplementation(Config.Libs.Misc.leakCanary)
6295
debugImplementation(Config.Libs.Misc.leakCanaryFragments)
6396
releaseImplementation(Config.Libs.Misc.leakCanaryNoop)

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

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -29,19 +29,17 @@
2929
import com.firebase.uidemo.database.firestore.FirestorePagingActivity;
3030
import com.firebase.uidemo.database.realtime.FirebaseDbPagingActivity;
3131
import com.firebase.uidemo.database.realtime.RealtimeDbChatActivity;
32+
import com.firebase.uidemo.databinding.ActivityChooserBinding;
3233
import com.firebase.uidemo.storage.ImageActivity;
3334

3435
import androidx.annotation.Nullable;
3536
import androidx.annotation.StringRes;
3637
import androidx.appcompat.app.AppCompatActivity;
3738
import androidx.recyclerview.widget.LinearLayoutManager;
3839
import androidx.recyclerview.widget.RecyclerView;
39-
import butterknife.BindView;
40-
import butterknife.ButterKnife;
4140

4241
public class ChooserActivity extends AppCompatActivity {
43-
@BindView(R.id.activities)
44-
RecyclerView mActivities;
42+
private ActivityChooserBinding mBinding;
4543

4644
@Override
4745
protected void onCreate(@Nullable Bundle savedInstanceState) {
@@ -55,13 +53,12 @@ protected void onCreate(@Nullable Bundle savedInstanceState) {
5553
finish();
5654
return;
5755
}
56+
mBinding = ActivityChooserBinding.inflate(getLayoutInflater());
57+
setContentView(mBinding.getRoot());
5858

59-
setContentView(R.layout.activity_chooser);
60-
ButterKnife.bind(this);
61-
62-
mActivities.setLayoutManager(new LinearLayoutManager(this));
63-
mActivities.setAdapter(new ActivityChooserAdapter());
64-
mActivities.setHasFixedSize(true);
59+
mBinding.activities.setLayoutManager(new LinearLayoutManager(this));
60+
mBinding.activities.setAdapter(new ActivityChooserAdapter());
61+
mBinding.activities.setHasFixedSize(true);
6562
}
6663

6764
private static class ActivityChooserAdapter

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

Lines changed: 78 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,7 @@
44
import android.os.Bundle;
55
import android.text.TextUtils;
66
import android.util.Log;
7-
import android.widget.Button;
8-
import android.widget.TextView;
7+
import android.view.View;
98
import android.widget.Toast;
109

1110
import com.firebase.ui.auth.AuthUI;
@@ -14,6 +13,7 @@
1413
import com.firebase.ui.auth.IdpResponse;
1514
import com.firebase.ui.auth.data.model.FirebaseAuthUIAuthenticationResult;
1615
import com.firebase.uidemo.R;
16+
import com.firebase.uidemo.databinding.ActivityAnonymousUpgradeBinding;
1717
import com.firebase.uidemo.util.ConfigurationUtils;
1818
import com.google.android.gms.tasks.OnCompleteListener;
1919
import com.google.android.gms.tasks.Task;
@@ -29,29 +29,15 @@
2929
import androidx.annotation.NonNull;
3030
import androidx.annotation.Nullable;
3131
import androidx.appcompat.app.AppCompatActivity;
32-
import butterknife.BindView;
33-
import butterknife.ButterKnife;
34-
import butterknife.OnClick;
3532

3633
public class AnonymousUpgradeActivity extends AppCompatActivity
3734
implements ActivityResultCallback<FirebaseAuthUIAuthenticationResult> {
3835

3936
private static final String TAG = "AccountLink";
4037

41-
@BindView(R.id.status_text)
42-
TextView mStatus;
38+
private static final int RC_SIGN_IN = 123;
4339

44-
@BindView(R.id.anon_sign_in)
45-
Button mAnonSignInButton;
46-
47-
@BindView(R.id.begin_flow)
48-
Button mLaunchUIButton;
49-
50-
@BindView(R.id.resolve_merge)
51-
Button mResolveMergeButton;
52-
53-
@BindView(R.id.sign_out)
54-
Button mSignOutButton;
40+
private ActivityAnonymousUpgradeBinding mBinding;
5541

5642
private AuthCredential mPendingCredential;
5743

@@ -61,8 +47,8 @@ public class AnonymousUpgradeActivity extends AppCompatActivity
6147
@Override
6248
protected void onCreate(@Nullable Bundle savedInstanceState) {
6349
super.onCreate(savedInstanceState);
64-
setContentView(R.layout.activity_anonymous_upgrade);
65-
ButterKnife.bind(this);
50+
mBinding = ActivityAnonymousUpgradeBinding.inflate(getLayoutInflater());
51+
setContentView(mBinding.getRoot());
6652

6753
updateUI();
6854

@@ -72,9 +58,36 @@ protected void onCreate(@Nullable Bundle savedInstanceState) {
7258
if (response != null) {
7359
handleSignInResult(ErrorCodes.ANONYMOUS_UPGRADE_MERGE_CONFLICT, response);
7460
}
61+
62+
mBinding.anonSignIn.setOnClickListener(new View.OnClickListener() {
63+
@Override
64+
public void onClick(View view) {
65+
signInAnonymously();
66+
}
67+
});
68+
69+
mBinding.beginFlow.setOnClickListener(new View.OnClickListener() {
70+
@Override
71+
public void onClick(View view) {
72+
startAuthUI();
73+
}
74+
});
75+
76+
mBinding.resolveMerge.setOnClickListener(new View.OnClickListener() {
77+
@Override
78+
public void onClick(View view) {
79+
resolveMerge();
80+
}
81+
});
82+
83+
mBinding.signOut.setOnClickListener(new View.OnClickListener() {
84+
@Override
85+
public void onClick(View view) {
86+
signOut();
87+
}
88+
});
7589
}
7690

77-
@OnClick(R.id.anon_sign_in)
7891
public void signInAnonymously() {
7992
FirebaseAuth.getInstance().signInAnonymously()
8093
.addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
@@ -92,7 +105,6 @@ public void onComplete(@NonNull Task<AuthResult> task) {
92105
});
93106
}
94107

95-
@OnClick(R.id.begin_flow)
96108
public void startAuthUI() {
97109
List<AuthUI.IdpConfig> providers = ConfigurationUtils.getConfiguredProviders(this);
98110
Intent signInIntent = AuthUI.getInstance().createSignInIntentBuilder()
@@ -103,7 +115,6 @@ public void startAuthUI() {
103115
signIn.launch(signInIntent);
104116
}
105117

106-
@OnClick(R.id.resolve_merge)
107118
public void resolveMerge() {
108119
if (mPendingCredential == null) {
109120
Toast.makeText(this, "Nothing to resolve.", Toast.LENGTH_SHORT).show();
@@ -130,7 +141,6 @@ public void onComplete(@NonNull Task<AuthResult> task) {
130141
});
131142
}
132143

133-
@OnClick(R.id.sign_out)
134144
public void signOut() {
135145
AuthUI.getInstance().signOut(this)
136146
.addOnCompleteListener(new OnCompleteListener<Void>() {
@@ -142,22 +152,33 @@ public void onComplete(@NonNull Task<Void> task) {
142152
});
143153
}
144154

145-
private void handleSignInResult(int resultCode, @Nullable IdpResponse response) {
146-
if (response == null) {
147-
// User pressed back button
148-
return;
149-
}
150-
if (resultCode == RESULT_OK) {
151-
setStatus("Signed in as " + getUserIdentifier(FirebaseAuth.getInstance()
152-
.getCurrentUser()));
153-
} else if (response.getError().getErrorCode() == ErrorCodes
154-
.ANONYMOUS_UPGRADE_MERGE_CONFLICT) {
155-
setStatus("Merge conflict: user already exists.");
156-
mResolveMergeButton.setEnabled(true);
157-
mPendingCredential = response.getCredentialForLinking();
158-
} else {
159-
Toast.makeText(this, "Auth error, see logs", Toast.LENGTH_SHORT).show();
160-
Log.w(TAG, "Error: " + response.getError().getMessage(), response.getError());
155+
@Override
156+
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
157+
super.onActivityResult(requestCode, resultCode, data);
158+
handleSignInResult(requestCode, resultCode, data);
159+
}
160+
161+
private void handleSignInResult(int requestCode, int resultCode, Intent data) {
162+
if (requestCode == RC_SIGN_IN) {
163+
IdpResponse response = IdpResponse.fromResultIntent(data);
164+
if (response == null) {
165+
// User pressed back button
166+
return;
167+
}
168+
if (resultCode == RESULT_OK) {
169+
setStatus("Signed in as " + getUserIdentifier(FirebaseAuth.getInstance()
170+
.getCurrentUser()));
171+
} else if (response.getError().getErrorCode() == ErrorCodes
172+
.ANONYMOUS_UPGRADE_MERGE_CONFLICT) {
173+
setStatus("Merge conflict: user already exists.");
174+
mBinding.resolveMerge.setEnabled(true);
175+
mPendingCredential = response.getCredentialForLinking();
176+
} else {
177+
Toast.makeText(this, "Auth error, see logs", Toast.LENGTH_SHORT).show();
178+
Log.w(TAG, "Error: " + response.getError().getMessage(), response.getError());
179+
}
180+
181+
updateUI();
161182
}
162183

163184
updateUI();
@@ -168,33 +189,33 @@ private void updateUI() {
168189

169190
if (currentUser == null) {
170191
// Not signed in
171-
mAnonSignInButton.setEnabled(true);
172-
mLaunchUIButton.setEnabled(false);
173-
mResolveMergeButton.setEnabled(false);
174-
mSignOutButton.setEnabled(false);
192+
mBinding.anonSignIn.setEnabled(true);
193+
mBinding.beginFlow.setEnabled(false);
194+
mBinding.resolveMerge.setEnabled(false);
195+
mBinding.signOut.setEnabled(false);
175196
} else if (mPendingCredential == null && currentUser.isAnonymous()) {
176197
// Anonymous user, waiting for linking
177-
mAnonSignInButton.setEnabled(false);
178-
mLaunchUIButton.setEnabled(true);
179-
mResolveMergeButton.setEnabled(false);
180-
mSignOutButton.setEnabled(true);
198+
mBinding.anonSignIn.setEnabled(false);
199+
mBinding.beginFlow.setEnabled(true);
200+
mBinding.resolveMerge.setEnabled(false);
201+
mBinding.signOut.setEnabled(true);
181202
} else if (mPendingCredential == null && !currentUser.isAnonymous()) {
182203
// Fully signed in
183-
mAnonSignInButton.setEnabled(false);
184-
mLaunchUIButton.setEnabled(false);
185-
mResolveMergeButton.setEnabled(false);
186-
mSignOutButton.setEnabled(true);
204+
mBinding.anonSignIn.setEnabled(false);
205+
mBinding.beginFlow.setEnabled(false);
206+
mBinding.resolveMerge.setEnabled(false);
207+
mBinding.signOut.setEnabled(true);
187208
} else if (mPendingCredential != null) {
188209
// Signed in anonymous, awaiting merge conflict
189-
mAnonSignInButton.setEnabled(false);
190-
mLaunchUIButton.setEnabled(false);
191-
mResolveMergeButton.setEnabled(true);
192-
mSignOutButton.setEnabled(true);
210+
mBinding.anonSignIn.setEnabled(false);
211+
mBinding.beginFlow.setEnabled(false);
212+
mBinding.resolveMerge.setEnabled(true);
213+
mBinding.signOut.setEnabled(true);
193214
}
194215
}
195216

196217
private void setStatus(String message) {
197-
mStatus.setText(message);
218+
mBinding.statusText.setText(message);
198219
}
199220

200221
private String getUserIdentifier(FirebaseUser user) {

0 commit comments

Comments
 (0)