Skip to content

Commit f1924c7

Browse files
committed
Added onActivityResult to the FirebaseAuthProvider base class
This way we can invoke it from a loop in FirebaseLoginDialog. All existing implementations are now (implicit) overrides of the empty method in the base class.
1 parent bb7b0fc commit f1924c7

File tree

2 files changed

+26
-32
lines changed

2 files changed

+26
-32
lines changed

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

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

33
import android.content.Context;
4+
import android.content.Intent;
45
import android.util.Log;
56

67
import com.firebase.client.AuthData;
@@ -34,16 +35,28 @@ protected FirebaseAuthProvider(Context context, AuthProviderType providerType, S
3435
}
3536

3637
public void login() {
37-
Log.d("FirebaseAuthProvider", "Login() is not supported for provider type " + getProviderName());
38+
Log.w("FirebaseAuthProvider", "Login() is not supported for provider type " + getProviderName());
3839
};
3940
public void login(String email, String password) {
40-
Log.d("FirebaseAuthProvider", "Login(String email, String password) is not supported for provider type " + getProviderName());
41+
Log.w("FirebaseAuthProvider", "Login(String email, String password) is not supported for provider type " + getProviderName());
4142
};
4243

4344
public void onFirebaseTokenReceived(FirebaseOAuthToken token, TokenAuthHandler handler) {
4445
authenticateRefWithOAuthFirebasetoken(token, handler);
4546
}
4647

48+
/**
49+
* Override this method in your provider subclass if you start an activity from the login() method.
50+
* Receive the result from a previous call to startActivityForResult(Intent, int). This follows
51+
* the related Activity API as described there in onActivityResult(int, int, Intent).
52+
* @param requestCode The integer request code originally supplied to startActivityForResult(),
53+
* allowing you to identify who this result came from/
54+
* @param resultCode The integer result code returned by the child activity through its setResult().
55+
* @param data An Intent, which can return result data to the caller (various data can be attached to Intent "extras").
56+
*/
57+
public void onActivityResult(int requestCode, int resultCode, Intent data) {
58+
}
59+
4760
private void authenticateRefWithOAuthFirebasetoken(FirebaseOAuthToken token, final TokenAuthHandler handler) {
4861
Firebase.AuthResultHandler authResultHandler = new Firebase.AuthResultHandler() {
4962
@Override

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

Lines changed: 11 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import android.content.Context;
77
import android.content.Intent;
88
import android.os.Bundle;
9+
import android.util.Log;
910
import android.view.LayoutInflater;
1011
import android.view.View;
1112
import android.widget.EditText;
@@ -23,9 +24,9 @@
2324

2425
public class FirebaseLoginDialog extends DialogFragment {
2526

26-
Map<SocialProvider, FirebaseAuthProvider> mEnabledProvidersByType = new HashMap<>();
27+
Map<AuthProviderType, FirebaseAuthProvider> mEnabledProvidersByType = new HashMap<>();
2728
TokenAuthHandler mHandler;
28-
SocialProvider mActiveProvider;
29+
AuthProviderType mActiveProvider;
2930
Firebase mRef;
3031
Context mContext;
3132
View mView;
@@ -58,16 +59,8 @@ public void cleanUp() {
5859
}
5960

6061
public void onActivityResult(int requestCode, int resultCode, Intent data) {
61-
if (getFacebookAuthProvider() != null) {
62-
getFacebookAuthProvider().mCallbackManager.onActivityResult(requestCode, resultCode, data);
63-
}
64-
65-
if (getTwitterAuthProvider() != null) {
66-
getTwitterAuthProvider().onActivityResult(requestCode, resultCode, data);
67-
}
68-
69-
if (getGoogleAuthProvider() != null) {
70-
getGoogleAuthProvider().onActivityResult(requestCode, resultCode, data);
62+
for (FirebaseAuthProvider provider: mEnabledProvidersByType.values()) {
63+
provider.onActivityResult(requestCode, resultCode, data);
7164
}
7265
}
7366

@@ -78,7 +71,7 @@ public Dialog onCreateDialog(Bundle savedInstanceState) {
7871

7972
mView = inflater.inflate(R.layout.fragment_firebase_login, null);
8073

81-
for (SocialProvider providerType : SocialProvider.values()) {
74+
for (AuthProviderType providerType : AuthProviderType.values()) {
8275
if (mEnabledProvidersByType.keySet().contains(providerType)) {
8376
showLoginOption(mEnabledProvidersByType.get(providerType), providerType.getButtonId());
8477
}
@@ -87,8 +80,8 @@ public Dialog onCreateDialog(Bundle savedInstanceState) {
8780
}
8881
}
8982

90-
if (mEnabledProvidersByType.containsKey(SocialProvider.PASSWORD) &&
91-
!(mEnabledProvidersByType.containsKey(SocialProvider.FACEBOOK) || mEnabledProvidersByType.containsKey(SocialProvider.GOOGLE) || mEnabledProvidersByType.containsKey(SocialProvider.TWITTER))) {
83+
if (mEnabledProvidersByType.containsKey(AuthProviderType.PASSWORD) &&
84+
!(mEnabledProvidersByType.containsKey(AuthProviderType.FACEBOOK) || mEnabledProvidersByType.containsKey(AuthProviderType.GOOGLE) || mEnabledProvidersByType.containsKey(AuthProviderType.TWITTER))) {
9285
mView.findViewById(R.id.or_section).setVisibility(View.GONE);
9386
}
9487

@@ -142,7 +135,7 @@ public void onProviderError(FirebaseLoginError err) {
142135
return this;
143136
}
144137

145-
public FirebaseLoginDialog setEnabledProvider(SocialProvider provider) {
138+
public FirebaseLoginDialog setEnabledProvider(AuthProviderType provider) {
146139
if (!mEnabledProvidersByType.containsKey(provider)) {
147140
mEnabledProvidersByType.put(provider, provider.createProvider(mContext, mRef, mHandler));
148141
}
@@ -153,7 +146,7 @@ private void showLoginOption(final FirebaseAuthProvider helper, int id) {
153146
mView.findViewById(id).setOnClickListener(new View.OnClickListener() {
154147
@Override
155148
public void onClick(View view) {
156-
if (SocialProvider.getTypeForProvider(helper) == SocialProvider.PASSWORD) {
149+
if (AuthProviderType.getTypeForProvider(helper) == AuthProviderType.PASSWORD) {
157150
EditText emailText = (EditText) mView.findViewById(R.id.email);
158151
EditText passwordText = (EditText) mView.findViewById(R.id.password);
159152
helper.login(emailText.getText().toString(), passwordText.getText().toString());
@@ -169,19 +162,7 @@ public void onClick(View view) {
169162
});
170163
}
171164

172-
public FacebookAuthProvider getFacebookAuthProvider() {
173-
return (FacebookAuthProvider) mEnabledProvidersByType.get(SocialProvider.FACEBOOK);
174-
}
175-
176-
public TwitterAuthProvider getTwitterAuthProvider() {
177-
return (TwitterAuthProvider) mEnabledProvidersByType.get(SocialProvider.TWITTER);
178-
}
179-
180165
public GoogleAuthProvider getGoogleAuthProvider() {
181-
return (GoogleAuthProvider) mEnabledProvidersByType.get(SocialProvider.GOOGLE);
182-
}
183-
184-
public PasswordAuthProvider getPasswordAuthProvider() {
185-
return (PasswordAuthProvider) mEnabledProvidersByType.get(SocialProvider.PASSWORD);
166+
return (GoogleAuthProvider) mEnabledProvidersByType.get(AuthProviderType.GOOGLE);
186167
}
187168
}

0 commit comments

Comments
 (0)