Skip to content

Commit ee7f6dd

Browse files
committed
Merge branch 'version-4.0.0-dev' into dialog-investigate
Change-Id: Iee54a95d47c0af7cc2e83cb0986153d2172007c3
2 parents 863746e + c49486e commit ee7f6dd

File tree

14 files changed

+96
-66
lines changed

14 files changed

+96
-66
lines changed

app/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ android {
3636
}
3737

3838
dependencies {
39-
implementation "com.google.firebase:firebase-core:$firebaseVersion"
39+
implementation "com.google.firebase:firebase-core:$coreVersion"
4040
implementation "com.android.support:design:$supportLibraryVersion"
4141
implementation 'com.android.support:multidex:1.0.3'
4242

auth/build.gradle

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,13 +36,13 @@ android {
3636
dependencies {
3737
implementation "com.android.support:design:$supportLibraryVersion"
3838
implementation "com.android.support:customtabs:$supportLibraryVersion"
39-
implementation 'com.android.support.constraint:constraint-layout:1.1.0-beta6'
39+
implementation "com.android.support.constraint:constraint-layout:$constraintVersion"
4040

4141
implementation "android.arch.lifecycle:extensions:$architectureVersion"
4242
annotationProcessor "android.arch.lifecycle:compiler:$architectureVersion"
4343

44-
api "com.google.firebase:firebase-auth:$firebaseVersion"
45-
api "com.google.android.gms:play-services-auth:$firebaseVersion"
44+
api "com.google.firebase:firebase-auth:$authVersion"
45+
api "com.google.android.gms:play-services-auth:$playAuthVersion"
4646

4747
compileOnly 'com.facebook.android:facebook-login:4.32.0'
4848
// Needed to override Facebook

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

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,12 @@
3333
public class TwitterSignInHandler extends ProviderSignInBase<Void> {
3434
static {
3535
if (ProviderAvailability.IS_TWITTER_AVAILABLE) {
36-
initializeTwitter();
36+
Context context = AuthUI.getApplicationContext();
37+
Twitter.initialize(new TwitterConfig.Builder(context)
38+
.twitterAuthConfig(new TwitterAuthConfig(
39+
context.getString(R.string.twitter_consumer_key),
40+
context.getString(R.string.twitter_consumer_secret)))
41+
.build());
3742
}
3843
}
3944

@@ -46,15 +51,11 @@ public TwitterSignInHandler(Application application) {
4651
}
4752

4853
public static void initializeTwitter() {
49-
Context context = AuthUI.getApplicationContext();
50-
51-
// Note: this has no effect if Twitter is already initialized so it's safe to call
52-
// multiple times.
53-
Twitter.initialize(new TwitterConfig.Builder(context)
54-
.twitterAuthConfig(new TwitterAuthConfig(
55-
context.getString(R.string.twitter_consumer_key),
56-
context.getString(R.string.twitter_consumer_secret)))
57-
.build());
54+
// This method is intentionally empty, but calling it forces the static {} block of this
55+
// class to be executed (if it wasn't already).
56+
//
57+
// Even though it's currently safe to initialize Twitter more than once, this protects
58+
// against a future behavior change and gives a small efficiency gain.
5859
}
5960

6061
private static IdpResponse createIdpResponse(

constants.gradle

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,23 @@
11
project.ext {
22
submodules = ['database', 'auth', 'storage', 'firestore', 'common']
33
group = 'com.firebaseui'
4-
version = '3.4.0-SNAPSHOT'
4+
version = '4.0.0-SNAPSHOT'
55
pomdesc = 'Firebase UI Android'
66

77
compileSdk = 27
88
targetSdk = 27
99
minSdk = 14
1010

11-
firebaseVersion = '15.0.0'
11+
coreVersion = '15.0.2' // firebase-core
12+
authVersion = '15.1.0' // firebase-auth
13+
playAuthVersion = '15.0.1' // play-services-auth
14+
rtdbVersion = '15.0.1' // firebase-database
15+
firestoreVersion = '16.0.0' // firebase-firestore
16+
storageVersion = '15.0.2' // firebase-storage
17+
1218
supportLibraryVersion = '27.1.1'
1319
architectureVersion = '1.1.1'
1420
kotlinVersion = '1.2.40'
1521
pagingVersion = '1.0.0-beta1'
22+
constraintVersion = '1.1.0'
1623
}

database/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ android {
1616

1717
dependencies {
1818
api project(path: ':common')
19-
api "com.google.firebase:firebase-database:$firebaseVersion"
19+
api "com.google.firebase:firebase-database:$rtdbVersion"
2020

2121
api "com.android.support:support-v4:$supportLibraryVersion"
2222
api "com.android.support:recyclerview-v7:$supportLibraryVersion"

firestore/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ android {
2424

2525
dependencies {
2626
api project(path: ':common')
27-
api "com.google.firebase:firebase-firestore:$firebaseVersion"
27+
api "com.google.firebase:firebase-firestore:$firestoreVersion"
2828

2929
api "com.android.support:support-v4:$supportLibraryVersion"
3030
api "com.android.support:recyclerview-v7:$supportLibraryVersion"

firestore/src/androidTest/java/com/firebase/ui/firestore/FirestoreDataSourceTest.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
import com.google.firebase.firestore.DocumentSnapshot;
1313
import com.google.firebase.firestore.Query;
1414
import com.google.firebase.firestore.QuerySnapshot;
15+
import com.google.firebase.firestore.Source;
1516

1617
import org.junit.Before;
1718
import org.junit.Test;
@@ -40,12 +41,12 @@ public class FirestoreDataSourceTest {
4041
@Mock PageKeyedDataSource.LoadCallback<PageKey, DocumentSnapshot> mAfterCallback;
4142

4243
@Before
43-
public void setUp() throws Exception {
44+
public void setUp() {
4445
MockitoAnnotations.initMocks(this);
4546
initMockQuery();
4647

4748
// Create a testing data source
48-
mDataSource = new FirestoreDataSource(mMockQuery);
49+
mDataSource = new FirestoreDataSource(mMockQuery, Source.DEFAULT);
4950
}
5051

5152
@Test
@@ -159,11 +160,11 @@ private void mockQuerySuccess(List<DocumentSnapshot> snapshots) {
159160
QuerySnapshot mockSnapshot = mock(QuerySnapshot.class);
160161
when(mockSnapshot.getDocuments()).thenReturn(snapshots);
161162

162-
when(mMockQuery.get()).thenReturn(Tasks.forResult(mockSnapshot));
163+
when(mMockQuery.get(Source.DEFAULT)).thenReturn(Tasks.forResult(mockSnapshot));
163164
}
164165

165166
private void mockQueryFailure(String message) {
166-
when(mMockQuery.get())
167+
when(mMockQuery.get(Source.DEFAULT))
167168
.thenReturn(Tasks.<QuerySnapshot>forException(new Exception(message)));
168169
}
169170

firestore/src/main/java/com/firebase/ui/firestore/FirestoreArray.java

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,9 @@
88
import com.google.firebase.firestore.EventListener;
99
import com.google.firebase.firestore.FirebaseFirestoreException;
1010
import com.google.firebase.firestore.ListenerRegistration;
11+
import com.google.firebase.firestore.MetadataChanges;
1112
import com.google.firebase.firestore.Query;
1213
import com.google.firebase.firestore.QueryDocumentSnapshot;
13-
import com.google.firebase.firestore.QueryListenOptions;
1414
import com.google.firebase.firestore.QuerySnapshot;
1515

1616
import java.util.ArrayList;
@@ -22,7 +22,7 @@
2222
public class FirestoreArray<T> extends ObservableSnapshotArray<T>
2323
implements EventListener<QuerySnapshot> {
2424
private final Query mQuery;
25-
private final QueryListenOptions mOptions;
25+
private final MetadataChanges mMetadataChanges;
2626
private ListenerRegistration mRegistration;
2727

2828
private final List<DocumentSnapshot> mSnapshots = new ArrayList<>();
@@ -35,19 +35,19 @@ public class FirestoreArray<T> extends ObservableSnapshotArray<T>
3535
* @see ObservableSnapshotArray#ObservableSnapshotArray(SnapshotParser)
3636
*/
3737
public FirestoreArray(@NonNull Query query, @NonNull SnapshotParser<T> parser) {
38-
this(query, new QueryListenOptions(), parser);
38+
this(query, MetadataChanges.EXCLUDE, parser);
3939
}
4040

4141
/**
42-
* @param options options for the query listen.
42+
* @param changes metadata options for the query listen.
4343
* @see #FirestoreArray(Query, SnapshotParser)
4444
*/
4545
public FirestoreArray(@NonNull Query query,
46-
@NonNull QueryListenOptions options,
46+
@NonNull MetadataChanges changes,
4747
@NonNull SnapshotParser<T> parser) {
4848
super(parser);
4949
mQuery = query;
50-
mOptions = options;
50+
mMetadataChanges = changes;
5151
}
5252

5353
@NonNull
@@ -59,7 +59,7 @@ protected List<DocumentSnapshot> getSnapshots() {
5959
@Override
6060
protected void onCreate() {
6161
super.onCreate();
62-
mRegistration = mQuery.addSnapshotListener(mOptions, this);
62+
mRegistration = mQuery.addSnapshotListener(mMetadataChanges, this);
6363
}
6464

6565
@Override
@@ -77,7 +77,7 @@ public void onEvent(QuerySnapshot snapshots, FirebaseFirestoreException e) {
7777
}
7878

7979
// Break down each document event
80-
List<DocumentChange> changes = snapshots.getDocumentChanges();
80+
List<DocumentChange> changes = snapshots.getDocumentChanges(mMetadataChanges);
8181
for (DocumentChange change : changes) {
8282
switch (change.getType()) {
8383
case ADDED:

firestore/src/main/java/com/firebase/ui/firestore/FirestoreRecyclerOptions.java

Lines changed: 19 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@
44
import android.support.annotation.NonNull;
55
import android.support.annotation.Nullable;
66

7+
import com.google.firebase.firestore.MetadataChanges;
78
import com.google.firebase.firestore.Query;
8-
import com.google.firebase.firestore.QueryListenOptions;
99

1010
import static com.firebase.ui.common.Preconditions.assertNonNull;
1111
import static com.firebase.ui.common.Preconditions.assertNull;
@@ -71,28 +71,19 @@ public Builder<T> setSnapshotArray(@NonNull ObservableSnapshotArray<T> snapshots
7171
}
7272

7373
/**
74-
* Set the query to use (with options) and provide a custom {@link SnapshotParser}.
75-
* <p>
76-
* Do not call this method after calling {@link #setSnapshotArray(ObservableSnapshotArray)}.
74+
* Calls {@link #setQuery(Query, MetadataChanges, Class)} with metadata changes excluded.
7775
*/
7876
@NonNull
79-
public Builder<T> setQuery(@NonNull Query query,
80-
@NonNull QueryListenOptions options,
81-
@NonNull SnapshotParser<T> parser) {
82-
assertNull(mSnapshots, ERR_SNAPSHOTS_SET);
83-
84-
mSnapshots = new FirestoreArray<>(query, options, parser);
85-
return this;
77+
public Builder<T> setQuery(@NonNull Query query, @NonNull SnapshotParser<T> parser) {
78+
return setQuery(query, MetadataChanges.EXCLUDE, parser);
8679
}
8780

88-
8981
/**
90-
* Calls {@link #setQuery(Query, QueryListenOptions, Class)} with the default {@link
91-
* QueryListenOptions}.
82+
* Calls {@link #setQuery(Query, MetadataChanges, Class)} with metadata changes excluded.
9283
*/
9384
@NonNull
94-
public Builder<T> setQuery(@NonNull Query query, @NonNull SnapshotParser<T> parser) {
95-
return setQuery(query, new QueryListenOptions(), parser);
85+
public Builder<T> setQuery(@NonNull Query query, @NonNull Class<T> modelClass) {
86+
return setQuery(query, MetadataChanges.EXCLUDE, modelClass);
9687
}
9788

9889
/**
@@ -103,18 +94,24 @@ public Builder<T> setQuery(@NonNull Query query, @NonNull SnapshotParser<T> pars
10394
*/
10495
@NonNull
10596
public Builder<T> setQuery(@NonNull Query query,
106-
@NonNull QueryListenOptions options,
97+
@NonNull MetadataChanges changes,
10798
@NonNull Class<T> modelClass) {
108-
return setQuery(query, options, new ClassSnapshotParser<>(modelClass));
99+
return setQuery(query, changes, new ClassSnapshotParser<>(modelClass));
109100
}
110101

111102
/**
112-
* Calls {@link #setQuery(Query, QueryListenOptions, Class)} with the default {@link
113-
* QueryListenOptions}.
103+
* Set the query to use (with options) and provide a custom {@link SnapshotParser}.
104+
* <p>
105+
* Do not call this method after calling {@link #setSnapshotArray(ObservableSnapshotArray)}.
114106
*/
115107
@NonNull
116-
public Builder<T> setQuery(@NonNull Query query, @NonNull Class<T> modelClass) {
117-
return setQuery(query, new QueryListenOptions(), modelClass);
108+
public Builder<T> setQuery(@NonNull Query query,
109+
@NonNull MetadataChanges changes,
110+
@NonNull SnapshotParser<T> parser) {
111+
assertNull(mSnapshots, ERR_SNAPSHOTS_SET);
112+
113+
mSnapshots = new FirestoreArray<>(query, changes, parser);
114+
return this;
118115
}
119116

120117
/**

firestore/src/main/java/com/firebase/ui/firestore/paging/FirestoreDataSource.java

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
import com.google.firebase.firestore.DocumentSnapshot;
1515
import com.google.firebase.firestore.Query;
1616
import com.google.firebase.firestore.QuerySnapshot;
17+
import com.google.firebase.firestore.Source;
1718

1819
import java.util.List;
1920

@@ -32,25 +33,29 @@ public class FirestoreDataSource extends PageKeyedDataSource<PageKey, DocumentSn
3233
public static class Factory extends DataSource.Factory<PageKey, DocumentSnapshot> {
3334

3435
private final Query mQuery;
36+
private final Source mSource;
3537

36-
public Factory(Query query) {
38+
public Factory(Query query, Source source) {
3739
mQuery = query;
40+
mSource = source;
3841
}
3942

4043
@Override
4144
public DataSource<PageKey, DocumentSnapshot> create() {
42-
return new FirestoreDataSource(mQuery);
45+
return new FirestoreDataSource(mQuery, mSource);
4346
}
4447
}
4548

4649
private final MutableLiveData<LoadingState> mLoadingState = new MutableLiveData<>();
4750

4851
private final Query mBaseQuery;
52+
private final Source mSource;
4953

5054
private Runnable mRetryRunnable;
5155

52-
public FirestoreDataSource(Query baseQuery) {
56+
public FirestoreDataSource(Query baseQuery, Source source) {
5357
mBaseQuery = baseQuery;
58+
mSource = source;
5459
}
5560

5661
@Override
@@ -61,7 +66,7 @@ public void loadInitial(@NonNull final LoadInitialParams<PageKey> params,
6166
mLoadingState.postValue(LoadingState.LOADING_INITIAL);
6267

6368
mBaseQuery.limit(params.requestedLoadSize)
64-
.get()
69+
.get(mSource)
6570
.addOnSuccessListener(new OnLoadSuccessListener() {
6671
@Override
6772
protected void setResult(@NonNull QuerySnapshot snapshot) {
@@ -97,7 +102,7 @@ public void loadAfter(@NonNull final LoadParams<PageKey> params,
97102
mLoadingState.postValue(LoadingState.LOADING_MORE);
98103

99104
key.getPageQuery(mBaseQuery, params.requestedLoadSize)
100-
.get()
105+
.get(mSource)
101106
.addOnSuccessListener(new OnLoadSuccessListener() {
102107
@Override
103108
protected void setResult(@NonNull QuerySnapshot snapshot) {

0 commit comments

Comments
 (0)