Skip to content

Commit 5a08bba

Browse files
committed
Various tweaks from feedback
1 parent 9d61550 commit 5a08bba

File tree

13 files changed

+91
-47
lines changed

13 files changed

+91
-47
lines changed

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

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
import com.firebase.client.FirebaseError;
2222
import com.firebase.client.Query;
2323
import com.firebase.ui.auth.core.FirebaseLoginBaseActivity;
24-
import com.firebase.ui.FirebaseRecyclerViewAdapter;
24+
import com.firebase.ui.FirebaseRecyclerAdapter;
2525
import com.firebase.ui.auth.core.FirebaseLoginError;
2626
import com.firebase.ui.auth.core.SocialProvider;
2727

@@ -37,7 +37,7 @@ public class RecyclerViewDemoActivity extends FirebaseLoginBaseActivity {
3737
private EditText mMessageEdit;
3838

3939
private RecyclerView mMessages;
40-
private FirebaseRecyclerViewAdapter<Chat, ChatHolder> mRecycleViewAdapter;
40+
private FirebaseRecyclerAdapter<Chat, ChatHolder> mRecycleViewAdapter;
4141

4242
@Override
4343
protected void onCreate(Bundle savedInstanceState) {
@@ -81,7 +81,7 @@ public void onComplete(FirebaseError firebaseError, Firebase firebase) {
8181
mMessages.setHasFixedSize(false);
8282
mMessages.setLayoutManager(manager);
8383

84-
mRecycleViewAdapter = new FirebaseRecyclerViewAdapter<Chat, ChatHolder>(Chat.class, R.layout.message, ChatHolder.class, mChatRef) {
84+
mRecycleViewAdapter = new FirebaseRecyclerAdapter<Chat, ChatHolder>(Chat.class, R.layout.message, ChatHolder.class, mChatRef) {
8585
@Override
8686
public void populateViewHolder(ChatHolder chatView, Chat chat) {
8787
chatView.setName(chat.getName());
@@ -208,7 +208,7 @@ public String getText() {
208208
}
209209

210210
public static class ChatHolder extends RecyclerView.ViewHolder {
211-
public View mView;
211+
View mView;
212212

213213
public ChatHolder(View itemView) {
214214
super(itemView);

build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ buildscript {
66
}
77
dependencies {
88
classpath 'com.android.tools.build:gradle:1.2.3'
9-
classpath 'com.google.gms:google-services:1.5.0-beta2'
9+
classpath 'com.google.gms:google-services:1.5.0'
1010
// NOTE: Do not place your application dependencies here; they belong
1111
// in the individual module build.gradle files
1212
}

library/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
<name>FirebaseUI-Android</name>
77
<description>FirebaseUI library for Android applications</description>
88
<url>https://github.com/firebase/FirebaseUI-Android</url>
9-
<version>0.2.2</version>
9+
<version>0.3.0</version>
1010
<packaging>aar</packaging>
1111
<scm>
1212
<url>scm:[email protected]/firebase/FirebaseUI-Android</url>

library/src/main/AndroidManifest.xml

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,4 @@
11
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.firebase.ui">
2-
3-
<uses-permission android:name="android.permission.INTERNET" />
4-
52
<application android:allowBackup="true" android:label="@string/app_name">
6-
73
</application>
8-
94
</manifest>

library/src/main/java/com/firebase/ui/FirebaseListAdapter.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -162,6 +162,7 @@ protected void populateView(View v, T model, int position) {
162162
* @param v The view to populate
163163
* @param model The object containing the data used to populate the view
164164
*/
165+
@Deprecated
165166
protected void populateView(View v, T model) {
166167

167168
}

library/src/main/java/com/firebase/ui/FirebaseRecyclerViewAdapter.java renamed to library/src/main/java/com/firebase/ui/FirebaseRecyclerAdapter.java

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -60,14 +60,14 @@
6060
* }
6161
* }
6262
*
63-
* FirebaseRecyclerViewAdapter<ChatMessage, ChatMessageViewHolder> adapter;
63+
* FirebaseRecyclerAdapter<ChatMessage, ChatMessageViewHolder> adapter;
6464
* ref = new Firebase("https://<yourapp>.firebaseio.com");
6565
*
6666
* RecyclerView recycler = (RecyclerView) findViewById(R.id.messages_recycler);
6767
* recycler.setHasFixedSize(true);
6868
* recycler.setLayoutManager(new LinearLayoutManager(this));
6969
*
70-
* adapter = new FirebaseRecyclerViewAdapter<ChatMessage, ChatMessageViewHolder>(ChatMessage.class, android.R.layout.two_line_list_item, ChatMessageViewHolder.class, mRef) {
70+
* adapter = new FirebaseRecyclerAdapter<ChatMessage, ChatMessageViewHolder>(ChatMessage.class, android.R.layout.two_line_list_item, ChatMessageViewHolder.class, mRef) {
7171
* public void populateViewHolder(ChatMessageViewHolder chatMessageViewHolder, ChatMessage chatMessage) {
7272
* chatMessageViewHolder.nameText.setText(chatMessage.getName());
7373
* chatMessageViewHolder.messageText.setText(chatMessage.getMessage());
@@ -80,7 +80,7 @@
8080
* @param <T> The Java class that maps to the type of objects stored in the Firebase location.
8181
* @param <VH> The ViewHolder class that contains the Views in the layout that is shown for each object.
8282
*/
83-
public abstract class FirebaseRecyclerViewAdapter<T, VH extends RecyclerView.ViewHolder> extends RecyclerView.Adapter<VH> {
83+
public abstract class FirebaseRecyclerAdapter<T, VH extends RecyclerView.ViewHolder> extends RecyclerView.Adapter<VH> {
8484

8585
Class<T> mModelClass;
8686
protected int mModelLayout;
@@ -95,7 +95,7 @@ public abstract class FirebaseRecyclerViewAdapter<T, VH extends RecyclerView.Vie
9595
* @param ref The Firebase location to watch for data changes. Can also be a slice of a location, using some
9696
* combination of <code>limit()</code>, <code>startAt()</code>, and <code>endAt()</code>
9797
*/
98-
public FirebaseRecyclerViewAdapter(Class<T> modelClass, int modelLayout, Class<VH> viewHolderClass, Query ref) {
98+
public FirebaseRecyclerAdapter(Class<T> modelClass, int modelLayout, Class<VH> viewHolderClass, Query ref) {
9999
mModelClass = modelClass;
100100
mModelLayout = modelLayout;
101101
mViewHolderClass = viewHolderClass;
@@ -132,7 +132,7 @@ public void onChanged(EventType type, int index, int oldIndex) {
132132
* @param ref The Firebase location to watch for data changes. Can also be a slice of a location, using some
133133
* combination of <code>limit()</code>, <code>startAt()</code>, and <code>endAt()</code>
134134
*/
135-
public FirebaseRecyclerViewAdapter(Class<T> modelClass, int modelLayout, Class<VH> viewHolderClass, Firebase ref) {
135+
public FirebaseRecyclerAdapter(Class<T> modelClass, int modelLayout, Class<VH> viewHolderClass, Firebase ref) {
136136
this(modelClass, modelLayout, viewHolderClass, (Query) ref);
137137
}
138138

@@ -186,7 +186,7 @@ public void onBindViewHolder(VH viewHolder, int position) {
186186
* this class. The third argument is the item's position in the list.
187187
* <p>
188188
* Your implementation should populate the view using the data contained in the model.
189-
* You should implement either this method or the other FirebaseRecyclerViewAdapter#populateViewHolder(VH, Object) method
189+
* You should implement either this method or the other FirebaseRecyclerAdapter#populateViewHolder(VH, Object) method
190190
* but not both.
191191
*
192192
* @param viewHolder The view to populate
@@ -199,14 +199,15 @@ protected void populateViewHolder(VH viewHolder, T model, int position) {
199199
/**
200200
* This is a backwards compatible version of populateViewHolder.
201201
* <p>
202-
* You should implement either this method or the other FirebaseRecyclerViewAdapter#populateViewHolder(VH, T, int) method
202+
* You should implement either this method or the other FirebaseRecyclerAdapter#populateViewHolder(VH, T, int) method
203203
* but not both.
204204
*
205205
* @see FirebaseListAdapter#populateView(View, Object, int)
206206
*
207207
* @param viewHolder The view to populate
208208
* @param model The object containing the data used to populate the view
209209
*/
210+
@Deprecated
210211
protected void populateViewHolder(VH viewHolder, T model) {
211212
};
212213

library/src/main/java/com/firebase/ui/auth/core/FirebaseAuthHelper.java renamed to library/src/main/java/com/firebase/ui/auth/core/FirebaseAuthProvider.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,24 +9,24 @@
99
import java.util.HashMap;
1010
import java.util.Map;
1111

12-
public abstract class FirebaseAuthHelper {
12+
public abstract class FirebaseAuthProvider {
1313
public abstract void logout();
1414
public abstract String getProviderName();
1515
public abstract Firebase getFirebaseRef();
16+
public abstract SocialProvider getProviderType();
1617

1718
public void login() {
18-
Log.d("FirebaseAuthHelper", "Login() is not supported for provider type " + getProviderName());
19+
Log.d("FirebaseAuthProvider", "Login() is not supported for provider type " + getProviderName());
1920
};
2021
public void login(String email, String password) {
21-
Log.d("FirebaseAuthHelper", "Login(String email, String password) is not supported for provider type " + getProviderName());
22+
Log.d("FirebaseAuthProvider", "Login(String email, String password) is not supported for provider type " + getProviderName());
2223
};
2324

2425
public void onFirebaseTokenReceived(FirebaseOAuthToken token, TokenAuthHandler handler) {
2526
authenticateRefWithOAuthFirebasetoken(token, handler);
2627
}
2728

2829
private void authenticateRefWithOAuthFirebasetoken(FirebaseOAuthToken token, final TokenAuthHandler handler) {
29-
Log.d("Got a token", token.token);
3030
Firebase.AuthResultHandler authResultHandler = new Firebase.AuthResultHandler() {
3131
@Override
3232
public void onAuthenticated(AuthData authData) {

library/src/main/java/com/firebase/ui/auth/core/FirebaseLoginBaseActivity.java

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,34 @@ public abstract class FirebaseLoginBaseActivity extends AppCompatActivity {
1414
private FirebaseLoginDialog mDialog;
1515
private TokenAuthHandler mHandler;
1616

17-
/* Abstract methods for Login Events */
17+
/**
18+
* Subclasses of this activity may implement this method to handle when a user logs in.
19+
*
20+
* @return void
21+
*/
1822
protected abstract void onFirebaseLoggedIn(AuthData authData);
1923

24+
/**
25+
* Subclasses of this activity may implement this method to handle when a user logs out.
26+
*
27+
* @return void
28+
*/
2029
protected abstract void onFirebaseLoggedOut();
2130

31+
/**
32+
* Subclasses of this activity may implement this method to handle any potential provider errors
33+
* like OAuth or other internal errors.
34+
*
35+
* @return void
36+
*/
2237
protected abstract void onFirebaseLoginProviderError(FirebaseLoginError firebaseError);
2338

39+
/**
40+
* Subclasses of this activity may implement this method to handle any potential user errors
41+
* like entering an incorrect password or closing the login dialog.
42+
*
43+
* @return void
44+
*/
2445
protected abstract void onFirebaseLoginUserError(FirebaseLoginError firebaseError);
2546

2647
/**
@@ -93,7 +114,7 @@ public void onAuthStateChanged(AuthData authData) {
93114
}
94115

95116
public void setEnabledAuthProvider(SocialProvider provider) {
96-
mDialog.setProviderEnabled(provider);
117+
mDialog.setEnabledProvider(provider);
97118
}
98119

99120
protected void onStop() {

library/src/main/java/com/firebase/ui/auth/core/FirebaseLoginDialog.java

Lines changed: 28 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ public class FirebaseLoginDialog extends DialogFragment {
2525
GoogleAuthProvider mGoogleAuthProvider;
2626
PasswordAuthProvider mPasswordAuthProvider;
2727
TokenAuthHandler mHandler;
28+
SocialProvider mActiveProvider;
2829
Firebase mRef;
2930
Context mContext;
3031
View mView;
@@ -34,6 +35,12 @@ public void onStart() {
3435
if (mGoogleAuthProvider != null) mGoogleAuthProvider.onStart();
3536
}
3637

38+
39+
/*
40+
We need to be extra aggressive about building / destroying mGoogleauthProviders so we don't
41+
end up with two clients connected at the same time.
42+
*/
43+
3744
public void onStop() {
3845
super.onStop();
3946
if (mGoogleAuthProvider != null) mGoogleAuthProvider.onStop();
@@ -45,15 +52,15 @@ public void onDestroy() {
4552
}
4653

4754
public void onActivityResult(int requestCode, int resultCode, Intent data) {
48-
if (mFacebookAuthProvider != null) {
55+
if (mFacebookAuthProvider != null && mActiveProvider == SocialProvider.facebook) {
4956
mFacebookAuthProvider.mCallbackManager.onActivityResult(requestCode, resultCode, data);
5057
}
5158

52-
if (mTwitterAuthProvider != null) {
59+
if (mTwitterAuthProvider != null && mActiveProvider == SocialProvider.twitter) {
5360
mTwitterAuthProvider.onActivityResult(requestCode, resultCode, data);
5461
}
5562

56-
if (mGoogleAuthProvider != null) {
63+
if (mGoogleAuthProvider != null && mActiveProvider == SocialProvider.google) {
5764
mGoogleAuthProvider.onActivityResult(requestCode, resultCode, data);
5865
}
5966
}
@@ -103,10 +110,20 @@ public void reset() {
103110
}
104111

105112
public void logout() {
106-
if (mFacebookAuthProvider != null) mFacebookAuthProvider.logout();
107-
if (mGoogleAuthProvider != null) mGoogleAuthProvider.logout();
108-
if (mTwitterAuthProvider != null) mTwitterAuthProvider.logout();
109-
if (mPasswordAuthProvider != null) mPasswordAuthProvider.logout();
113+
switch (mActiveProvider) {
114+
case twitter:
115+
mTwitterAuthProvider.logout();
116+
break;
117+
case facebook:
118+
mFacebookAuthProvider.logout();
119+
break;
120+
case google:
121+
mGoogleAuthProvider.logout();
122+
break;
123+
case password:
124+
mPasswordAuthProvider.logout();
125+
break;
126+
}
110127
mRef.unauth();
111128
}
112129

@@ -133,7 +150,7 @@ public void onProviderError(FirebaseLoginError err) {
133150
return this;
134151
}
135152

136-
public FirebaseLoginDialog setProviderEnabled(SocialProvider provider) {
153+
public FirebaseLoginDialog setEnabledProvider(SocialProvider provider) {
137154
switch (provider) {
138155
case facebook:
139156
if (mFacebookAuthProvider == null)
@@ -156,11 +173,11 @@ public FirebaseLoginDialog setProviderEnabled(SocialProvider provider) {
156173
return this;
157174
}
158175

159-
private void showLoginOption(final FirebaseAuthHelper helper, int id) {
176+
private void showLoginOption(final FirebaseAuthProvider helper, int id) {
160177
mView.findViewById(id).setOnClickListener(new View.OnClickListener() {
161178
@Override
162179
public void onClick(View view) {
163-
if (helper.getProviderName().equals("password")) {
180+
if (helper.getProviderType() == SocialProvider.password) {
164181
EditText emailText = (EditText) mView.findViewById(R.id.email);
165182
EditText passwordText = (EditText) mView.findViewById(R.id.password);
166183
helper.login(emailText.getText().toString(), passwordText.getText().toString());
@@ -169,6 +186,7 @@ public void onClick(View view) {
169186
} else {
170187
helper.login();
171188
}
189+
mActiveProvider = helper.getProviderType();
172190
mView.findViewById(R.id.login_section).setVisibility(View.GONE);
173191
mView.findViewById(R.id.loading_section).setVisibility(View.VISIBLE);
174192
}

library/src/main/java/com/firebase/ui/auth/facebook/FacebookAuthProvider.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,18 +15,20 @@
1515
import com.facebook.login.LoginManager;
1616
import com.facebook.login.LoginResult;
1717
import com.firebase.client.Firebase;
18-
import com.firebase.ui.auth.core.FirebaseAuthHelper;
18+
import com.firebase.ui.auth.core.FirebaseAuthProvider;
1919
import com.firebase.ui.auth.core.FirebaseResponse;
2020
import com.firebase.ui.auth.core.FirebaseLoginError;
2121
import com.firebase.ui.auth.core.FirebaseOAuthToken;
22+
import com.firebase.ui.auth.core.SocialProvider;
2223
import com.firebase.ui.auth.core.TokenAuthHandler;
2324

2425
import java.util.Arrays;
2526
import java.util.Collection;
2627

27-
public class FacebookAuthProvider extends FirebaseAuthHelper {
28+
public class FacebookAuthProvider extends FirebaseAuthProvider {
2829

2930
public static final String PROVIDER_NAME = "facebook";
31+
public static final SocialProvider PROVIDER_TYPE = SocialProvider.facebook;
3032
private final String TAG = "FacebookAuthProvider";
3133
public CallbackManager mCallbackManager;
3234
private LoginManager mLoginManager;
@@ -102,10 +104,8 @@ public void onActivityResult(int requestCode, int resultCode, Intent data) {
102104
mCallbackManager.onActivityResult(requestCode, resultCode, data);
103105
}
104106

105-
public String getProviderName() {
106-
return PROVIDER_NAME;
107-
}
108-
107+
public String getProviderName() { return PROVIDER_NAME; }
108+
public SocialProvider getProviderType() { return PROVIDER_TYPE; };
109109
public Firebase getFirebaseRef() {return mRef; }
110110

111111
public void logout() {

0 commit comments

Comments
 (0)