Skip to content

Commit 8565d50

Browse files
committed
Refactor Provider to simplify inflating each idp button
1 parent 934a72c commit 8565d50

File tree

6 files changed

+45
-37
lines changed

6 files changed

+45
-37
lines changed

auth/src/main/java/com/firebase/ui/auth/provider/EmailProvider.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import android.app.Activity;
44
import android.content.Context;
55
import android.content.Intent;
6+
import android.support.annotation.LayoutRes;
67

78
import com.firebase.ui.auth.R;
89
import com.firebase.ui.auth.ResultCodes;
@@ -31,6 +32,12 @@ public String getProviderId() {
3132
return EmailAuthProvider.PROVIDER_ID;
3233
}
3334

35+
@Override
36+
@LayoutRes
37+
public int getButtonLayout() {
38+
return R.layout.provider_button_email;
39+
}
40+
3441
@Override
3542
public void startLogin(Activity activity) {
3643
activity.startActivityForResult(

auth/src/main/java/com/firebase/ui/auth/provider/FacebookProvider.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import android.content.Context;
1919
import android.content.Intent;
2020
import android.os.Bundle;
21+
import android.support.annotation.LayoutRes;
2122
import android.support.annotation.StyleRes;
2223
import android.util.Log;
2324

@@ -91,6 +92,12 @@ public String getProviderId() {
9192
return FacebookAuthProvider.PROVIDER_ID;
9293
}
9394

95+
@Override
96+
@LayoutRes
97+
public int getButtonLayout() {
98+
return R.layout.idp_button_facebook;
99+
}
100+
94101
@Override
95102
public void startLogin(Activity activity) {
96103
sCallbackManager = CallbackManager.Factory.create();

auth/src/main/java/com/firebase/ui/auth/provider/GoogleProvider.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import android.content.Context;
1919
import android.content.Intent;
2020
import android.os.Bundle;
21+
import android.support.annotation.LayoutRes;
2122
import android.support.annotation.NonNull;
2223
import android.support.annotation.Nullable;
2324
import android.support.v4.app.FragmentActivity;
@@ -107,6 +108,12 @@ public String getProviderId() {
107108
return GoogleAuthProvider.PROVIDER_ID;
108109
}
109110

111+
@Override
112+
@LayoutRes
113+
public int getButtonLayout() {
114+
return R.layout.idp_button_google;
115+
}
116+
110117
@Override
111118
public void setAuthenticationCallback(IdpCallback callback) {
112119
mIdpCallback = callback;

auth/src/main/java/com/firebase/ui/auth/provider/Provider.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import android.app.Activity;
44
import android.content.Context;
55
import android.content.Intent;
6+
import android.support.annotation.LayoutRes;
67

78
import com.google.firebase.auth.GoogleAuthProvider;
89

@@ -13,6 +14,10 @@ public interface Provider {
1314
/** Retrieves the id of the IDP, e.g. {@link GoogleAuthProvider#PROVIDER_ID}. */
1415
String getProviderId();
1516

17+
/** Retrieves the layout id of the button to inflate and/or set a click listener. */
18+
@LayoutRes
19+
int getButtonLayout();
20+
1621
/** Start the login process for the IDP, e.g. show the Google sign-in activity. */
1722
void startLogin(Activity activity);
1823

auth/src/main/java/com/firebase/ui/auth/provider/TwitterProvider.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import android.content.Context;
55
import android.content.Intent;
66
import android.os.Bundle;
7+
import android.support.annotation.LayoutRes;
78
import android.util.Log;
89

910
import com.firebase.ui.auth.IdpResponse;
@@ -57,6 +58,12 @@ public String getProviderId() {
5758
return TwitterAuthProvider.PROVIDER_ID;
5859
}
5960

61+
@Override
62+
@LayoutRes
63+
public int getButtonLayout() {
64+
return R.layout.idp_button_twitter;
65+
}
66+
6067
@Override
6168
public void setAuthenticationCallback(IdpCallback callback) {
6269
mCallbackObject = callback;

auth/src/main/java/com/firebase/ui/auth/ui/idp/AuthMethodPickerActivity.java

Lines changed: 12 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -43,10 +43,6 @@
4343
import com.firebase.ui.auth.ui.email.RegisterEmailActivity;
4444
import com.firebase.ui.auth.util.signincontainer.SaveSmartLock;
4545
import com.google.firebase.auth.AuthCredential;
46-
import com.google.firebase.auth.EmailAuthProvider;
47-
import com.google.firebase.auth.FacebookAuthProvider;
48-
import com.google.firebase.auth.GoogleAuthProvider;
49-
import com.google.firebase.auth.TwitterAuthProvider;
5046

5147
import java.util.ArrayList;
5248
import java.util.List;
@@ -112,41 +108,20 @@ private void populateIdpList(List<IdpConfig> providers) {
112108

113109
ViewGroup btnHolder = (ViewGroup) findViewById(R.id.btn_holder);
114110
for (final Provider provider : mProviders) {
115-
View loginButton = null;
116-
switch (provider.getProviderId()) {
117-
case GoogleAuthProvider.PROVIDER_ID:
118-
loginButton = getLayoutInflater()
119-
.inflate(R.layout.idp_button_google, btnHolder, false);
120-
break;
121-
case FacebookAuthProvider.PROVIDER_ID:
122-
loginButton = getLayoutInflater()
123-
.inflate(R.layout.idp_button_facebook, btnHolder, false);
124-
break;
125-
case TwitterAuthProvider.PROVIDER_ID:
126-
loginButton = getLayoutInflater()
127-
.inflate(R.layout.idp_button_twitter, btnHolder, false);
128-
break;
129-
case EmailAuthProvider.PROVIDER_ID:
130-
loginButton = getLayoutInflater()
131-
.inflate(R.layout.provider_button_email, btnHolder, false);
132-
break;
133-
default:
134-
Log.e(TAG, "No button for provider " + provider.getProviderId());
135-
}
136-
137-
if (loginButton != null) {
138-
loginButton.setOnClickListener(new View.OnClickListener() {
139-
@Override
140-
public void onClick(View view) {
141-
mActivityHelper.showLoadingDialog(R.string.progress_dialog_loading);
142-
provider.startLogin(AuthMethodPickerActivity.this);
143-
}
144-
});
145-
if (provider instanceof IdpProvider) {
146-
((IdpProvider) provider).setAuthenticationCallback(this);
111+
View loginButton = getLayoutInflater()
112+
.inflate(provider.getButtonLayout(), btnHolder, false);
113+
114+
loginButton.setOnClickListener(new View.OnClickListener() {
115+
@Override
116+
public void onClick(View view) {
117+
mActivityHelper.showLoadingDialog(R.string.progress_dialog_loading);
118+
provider.startLogin(AuthMethodPickerActivity.this);
147119
}
148-
btnHolder.addView(loginButton);
120+
});
121+
if (provider instanceof IdpProvider) {
122+
((IdpProvider) provider).setAuthenticationCallback(this);
149123
}
124+
btnHolder.addView(loginButton);
150125
}
151126
}
152127

0 commit comments

Comments
 (0)