Skip to content

Commit 74385dc

Browse files
authored
Merge pull request #936 from firebase/firestore
Firestore
2 parents 59dfda3 + c8644c6 commit 74385dc

File tree

68 files changed

+5683
-1149
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

68 files changed

+5683
-1149
lines changed

README.md

Lines changed: 24 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,7 @@
33
[![Build Status](https://travis-ci.org/firebase/FirebaseUI-Android.svg?branch=master)](https://travis-ci.org/firebase/FirebaseUI-Android)
44

55
FirebaseUI is an open-source library for Android that allows you to
6-
quickly connect common UI elements to [Firebase](https://firebase.google.com)
7-
APIs like the Realtime Database or Firebase Authentication.
6+
quickly connect common UI elements to [Firebase](https://firebase.google.com) APIs.
87

98
A compatible FirebaseUI client is also available for [iOS](https://github.com/firebase/firebaseui-ios).
109

@@ -19,10 +18,11 @@ A compatible FirebaseUI client is also available for [iOS](https://github.com/fi
1918

2019
## Usage
2120

22-
FirebaseUI has separate modules for using Firebase Database, Auth, and Storage. To
23-
get started, see the individual instructions for each module:
21+
FirebaseUI has separate modules for using Firebase Realtime Database, Cloud Firestore,
22+
Firebase Auth, and Cloud Storage. To get started, see the individual instructions for each module:
2423

2524
* [firebase-ui-database](database/README.md)
25+
* [firebase-ui-firestore](firestore/README.md)
2626
* [firebase-ui-auth](auth/README.md)
2727
* [firebase-ui-storage](storage/README.md)
2828

@@ -38,17 +38,17 @@ libraries.
3838

3939
```groovy
4040
dependencies {
41-
// FirebaseUI Database only
41+
// FirebaseUI for Firebase Realtime Database
4242
compile 'com.firebaseui:firebase-ui-database:2.4.0'
43+
44+
// FirebaseUI for Cloud Firestore
45+
compile 'com.firebaseui:firebase-ui-firestore:2.4.0'
4346
44-
// FirebaseUI Auth only
47+
// FirebaseUI for Firebase Auth
4548
compile 'com.firebaseui:firebase-ui-auth:2.4.0'
4649
47-
// FirebaseUI Storage only
50+
// FirebaseUI for Cloud Storage
4851
compile 'com.firebaseui:firebase-ui-storage:2.4.0'
49-
50-
// Single target that includes all FirebaseUI libraries above
51-
compile 'com.firebaseui:firebase-ui:2.4.0'
5252
}
5353
```
5454

@@ -63,6 +63,7 @@ After the project is synchronized, we're ready to start using Firebase functiona
6363
If you are using an old version of FirebaseUI and upgrading, please see the appropriate
6464
migration guide:
6565

66+
* [Upgrade from 2.3.0 to 3.x.x](./docs/upgrade-to-3.0.md)
6667
* [Upgrade from 1.2.0 to 2.x.x](./docs/upgrade-to-2.0.md)
6768

6869
## Dependencies
@@ -78,6 +79,9 @@ firebase-ui-auth
7879
firebase-ui-database
7980
|--- com.google.firebase:firebase-database
8081
82+
firebase-ui-firestore
83+
|--- com.google.firebase:firebase-firestore
84+
8185
firebase-ui-storage
8286
|--- com.google.firebase:firebase-storage
8387
```
@@ -121,7 +125,7 @@ compile "com.android.support:customtabs:$BAR"
121125
compile "com.android.support:cardview-v7:$BAR"
122126
```
123127

124-
Database:
128+
Realtime Database:
125129

126130
```groovy
127131
compile "com.google.firebase:firebase-database:$FOO"
@@ -130,6 +134,15 @@ compile "com.android.support:recyclerview-v7:$BAR"
130134
compile "com.android.support:support-v4:$BAR"
131135
```
132136

137+
Firestore:
138+
139+
```groovy
140+
compile "com.google.firebase:firebase-firestore:$FOO"
141+
142+
compile "com.android.support:recyclerview-v7:$BAR"
143+
compile "com.android.support:support-v4:$BAR"
144+
```
145+
133146
Storage:
134147

135148
```groovy

app/build.gradle

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ android {
1313
versionName "1.0"
1414

1515
vectorDrawables.useSupportLibrary = true
16+
multiDexEnabled true
1617
}
1718

1819
buildTypes {
@@ -34,9 +35,11 @@ android {
3435
dependencies {
3536
compile fileTree(dir: 'libs', include: ['*.jar'])
3637
compile "com.android.support:design:$supportLibraryVersion"
38+
compile 'com.android.support:multidex:1.0.1'
3739

3840
compile project(path: ':auth')
3941
compile project(path: ':database')
42+
compile project(path: ':firestore')
4043
compile project(path: ':storage')
4144

4245
compile "com.google.android.gms:play-services-auth:$firebaseVersion"
@@ -47,6 +50,9 @@ dependencies {
4750
compile('com.facebook.android:facebook-login:4.27.0')
4851
compile("com.twitter.sdk.android:twitter-core:3.0.0@aar") { transitive = true }
4952

53+
compile "android.arch.lifecycle:runtime:$architectureVersion"
54+
compile "android.arch.lifecycle:extensions:$architectureVersion"
55+
5056
compile 'com.github.bumptech.glide:glide:4.1.1'
5157
annotationProcessor 'com.github.bumptech.glide:compiler:4.1.1'
5258

app/src/main/AndroidManifest.xml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,11 @@
3838
android:name=".auth.SignedInActivity"
3939
android:label="@string/title_auth_activity" />
4040

41+
<!-- Firestore demo -->
42+
<activity
43+
android:name=".database.firestore.FirestoreChatActivity"
44+
android:label="@string/title_firestore_activity" />
45+
4146
<!-- Realtime database demo -->
4247
<activity
4348
android:name=".database.realtime.RealtimeDbChatActivity"

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

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
import android.widget.TextView;
2727

2828
import com.firebase.uidemo.auth.AuthUiActivity;
29+
import com.firebase.uidemo.database.firestore.FirestoreChatActivity;
2930
import com.firebase.uidemo.database.realtime.RealtimeDbChatActivity;
3031
import com.firebase.uidemo.storage.ImageActivity;
3132

@@ -50,18 +51,21 @@ protected void onCreate(Bundle savedInstanceState) {
5051
private static class ActivityChooserAdapter extends RecyclerView.Adapter<ActivityStarterHolder> {
5152
private static final Class[] CLASSES = new Class[]{
5253
AuthUiActivity.class,
54+
FirestoreChatActivity.class,
5355
RealtimeDbChatActivity.class,
5456
ImageActivity.class,
5557
};
5658

5759
private static final int[] DESCRIPTION_NAMES = new int[]{
5860
R.string.title_auth_activity,
61+
R.string.title_firestore_activity,
5962
R.string.title_realtime_database_activity,
6063
R.string.title_storage_activity
6164
};
6265

6366
private static final int[] DESCRIPTION_IDS = new int[]{
6467
R.string.desc_auth,
68+
R.string.desc_firestore,
6569
R.string.desc_realtime_database,
6670
R.string.desc_storage
6771
};

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
package com.firebase.uidemo.auth;
22

3-
import android.app.Application;
43
import android.content.Context;
4+
import android.support.multidex.MultiDexApplication;
55
import android.support.v7.app.AppCompatDelegate;
66

77
import com.squareup.leakcanary.LeakCanary;
88
import com.squareup.leakcanary.RefWatcher;
99

10-
public class FirebaseUIDemo extends Application {
10+
public class FirebaseUIDemo extends MultiDexApplication {
1111
private RefWatcher mRefWatcher;
1212

1313
static {

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

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,6 @@ public class SignedInActivity extends AppCompatActivity {
6969
@BindView(R.id.user_display_name)
7070
TextView mUserDisplayName;
7171

72-
7372
@BindView(R.id.user_phone_number)
7473
TextView mUserPhoneNumber;
7574

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package com.firebase.uidemo.database;
2+
3+
/**
4+
* Common interface for chat messages, helps share code between RTDB and Firestore examples.
5+
*/
6+
public abstract class AbstractChat {
7+
8+
public abstract String getName();
9+
10+
public abstract String getMessage();
11+
12+
public abstract String getUid();
13+
14+
}

app/src/main/java/com/firebase/uidemo/database/ChatHolder.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -28,17 +28,17 @@ public class ChatHolder extends RecyclerView.ViewHolder {
2828

2929
public ChatHolder(View itemView) {
3030
super(itemView);
31-
mNameField = (TextView) itemView.findViewById(R.id.name_text);
32-
mTextField = (TextView) itemView.findViewById(R.id.message_text);
33-
mLeftArrow = (FrameLayout) itemView.findViewById(R.id.left_arrow);
34-
mRightArrow = (FrameLayout) itemView.findViewById(R.id.right_arrow);
35-
mMessageContainer = (RelativeLayout) itemView.findViewById(R.id.message_container);
36-
mMessage = (LinearLayout) itemView.findViewById(R.id.message);
31+
mNameField = itemView.findViewById(R.id.name_text);
32+
mTextField = itemView.findViewById(R.id.message_text);
33+
mLeftArrow = itemView.findViewById(R.id.left_arrow);
34+
mRightArrow = itemView.findViewById(R.id.right_arrow);
35+
mMessageContainer = itemView.findViewById(R.id.message_container);
36+
mMessage = itemView.findViewById(R.id.message);
3737
mGreen300 = ContextCompat.getColor(itemView.getContext(), R.color.material_green_300);
3838
mGray300 = ContextCompat.getColor(itemView.getContext(), R.color.material_gray_300);
3939
}
4040

41-
public void bind(Chat chat) {
41+
public void bind(AbstractChat chat) {
4242
setName(chat.getName());
4343
setText(chat.getMessage());
4444

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
package com.firebase.uidemo.database.firestore;
2+
3+
import com.firebase.uidemo.database.AbstractChat;
4+
import com.google.firebase.firestore.IgnoreExtraProperties;
5+
import com.google.firebase.firestore.ServerTimestamp;
6+
7+
import java.util.Date;
8+
9+
@IgnoreExtraProperties
10+
public class Chat extends AbstractChat {
11+
12+
private String mName;
13+
private String mMessage;
14+
private String mUid;
15+
private Date mTimestamp;
16+
17+
public Chat() {
18+
// Needed for Firebase
19+
}
20+
21+
public Chat(String name, String message, String uid) {
22+
mName = name;
23+
mMessage = message;
24+
mUid = uid;
25+
}
26+
27+
public String getName() {
28+
return mName;
29+
}
30+
31+
public void setName(String name) {
32+
mName = name;
33+
}
34+
35+
public String getMessage() {
36+
return mMessage;
37+
}
38+
39+
public void setMessage(String message) {
40+
mMessage = message;
41+
}
42+
43+
public String getUid() {
44+
return mUid;
45+
}
46+
47+
public void setUid(String uid) {
48+
mUid = uid;
49+
}
50+
51+
@ServerTimestamp
52+
public Date getTimestamp() {
53+
return mTimestamp;
54+
}
55+
56+
public void setTimestamp(Date timestamp) {
57+
mTimestamp = timestamp;
58+
}
59+
}

0 commit comments

Comments
 (0)