Skip to content

Commit 7a19fff

Browse files
author
Jiachen Zhao
committed
Change WelcombackIDPPrompt to use IDPParcels propagated through
the activities Bug:28654311 Change-Id: Ia19134945896257043489c73721a880df1a9a960
1 parent 9a7a10f commit 7a19fff

File tree

3 files changed

+34
-24
lines changed

3 files changed

+34
-24
lines changed

auth/src/main/java/com/firebase/ui/auth/ui/BaseActivity.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,9 @@
2424
import com.firebase.ui.auth.choreographer.Controller;
2525
import com.firebase.ui.auth.choreographer.ControllerConstants;
2626
import com.firebase.ui.auth.choreographer.Result;
27+
import com.firebase.ui.auth.choreographer.idp.provider.IDPProviderParcel;
2728

29+
import java.util.ArrayList;
2830
import java.util.concurrent.atomic.AtomicBoolean;
2931

3032
public abstract class BaseActivity extends android.support.v7.app.AppCompatActivity {
@@ -40,6 +42,7 @@ public abstract class BaseActivity extends android.support.v7.app.AppCompatActiv
4042
protected String mAppName;
4143
protected String mTermsOfServiceUrl;
4244
protected AtomicBoolean isPendingFinishing = new AtomicBoolean(false);
45+
protected ArrayList<IDPProviderParcel> mProviderParcels;
4346

4447
@Override
4548
protected void onCreate(Bundle savedInstanceState) {
@@ -48,6 +51,7 @@ protected void onCreate(Bundle savedInstanceState) {
4851
mAppName = getIntent().getStringExtra(ControllerConstants.EXTRA_APP_NAME);
4952
mTermsOfServiceUrl = getIntent().getStringExtra(ControllerConstants.EXTRA_TERMS_OF_SERVICE_URL);
5053
mId = previousIntent.getIntExtra(EXTRA_ID, Controller.DEFAULT_INIT_FLOW_ID);
54+
mProviderParcels = getIntent().getParcelableArrayListExtra(ControllerConstants.EXTRA_PROVIDERS);
5155
mController = setUpController();
5256
}
5357

@@ -119,6 +123,10 @@ protected void doAction(Action action) {
119123
ControllerConstants.EXTRA_TERMS_OF_SERVICE_URL,
120124
mTermsOfServiceUrl
121125
);
126+
newFlowIntent.putExtra(
127+
ControllerConstants.EXTRA_PROVIDERS,
128+
mProviderParcels
129+
);
122130
this.startActivityForResult(newFlowIntent, NEXT_FLOW);
123131
return;
124132
}
@@ -130,6 +138,10 @@ protected void doAction(Action action) {
130138
ControllerConstants.EXTRA_TERMS_OF_SERVICE_URL,
131139
mTermsOfServiceUrl
132140
)
141+
.putExtra(
142+
ControllerConstants.EXTRA_PROVIDERS,
143+
mProviderParcels
144+
)
133145
.putExtra(EXTRA_ID, action.getNextId()));
134146
} else {
135147
this.setResult(action.getFinishResultCode(), action.getFinishData());

auth/src/main/java/com/firebase/ui/auth/ui/account_link/WelcomeBackIDPPrompt.java

Lines changed: 22 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -49,22 +49,28 @@ protected void onCreate(Bundle savedInstanceState) {
4949
mProviderId = getProviderIdFromIntent();
5050
setContentView(R.layout.welcome_back_idp_prompt_layout);
5151

52-
IDPProviderParcel parcel;
53-
switch (mProviderId) {
54-
case GoogleAuthProvider.PROVIDER_ID:
55-
parcel = GoogleProvider.createParcel(
56-
JSONUtil.getGoogleClientId(getApplicationContext()));
57-
mIDPProvider = new GoogleProvider(this, parcel);
58-
break;
59-
case FacebookAuthProvider.PROVIDER_ID:
60-
parcel = FacebookProvider.createFacebookParcel(
61-
JSONUtil.getFacebookApplicationId(getApplicationContext()));
62-
mIDPProvider = new FacebookProvider(this, parcel);
63-
break;
64-
default:
65-
Log.w(TAG, "Unknown provider: " + mProviderId);
66-
finish(RESULT_CANCELED, getIntent());
67-
return;
52+
mIDPProvider = null;
53+
for (IDPProviderParcel providerParcel: mProviderParcels) {
54+
if (mProviderId.equals(providerParcel.getProviderType())) {
55+
switch (mProviderId) {
56+
case GoogleAuthProvider.PROVIDER_ID:
57+
mIDPProvider = new GoogleProvider(this, providerParcel);
58+
break;
59+
case FacebookAuthProvider.PROVIDER_ID:
60+
mIDPProvider = new FacebookProvider(this, providerParcel);
61+
break;
62+
default:
63+
Log.w(TAG, "Unknown provider: " + mProviderId);
64+
finish(RESULT_CANCELED, getIntent());
65+
return;
66+
}
67+
}
68+
}
69+
70+
if (mIDPProvider == null) {
71+
getIntent().putExtra(ControllerConstants.EXTRA_ERROR_MESSAGE,
72+
"Firebase login successful. Account linking failed due to provider not enabled by application");
73+
finish(RESULT_CANCELED, getIntent());
6874
}
6975

7076
((TextView) findViewById(R.id.welcome_back_idp_prompt))

auth/src/main/java/com/firebase/ui/auth/ui/credentials/CredentialsBaseActivity.java

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -27,18 +27,10 @@
2727

2828
public abstract class CredentialsBaseActivity extends BaseActivity {
2929
protected CredentialsAPI mCredentialsAPI;
30-
private ArrayList<Parcelable> mParcelables;
3130

3231
@Override
3332
protected void onCreate(Bundle savedInstanceState) {
3433
super.onCreate(savedInstanceState);
35-
mParcelables = getIntent().getParcelableArrayListExtra(ControllerConstants.EXTRA_PROVIDERS);
36-
}
37-
38-
@Override
39-
public void finish(int resultCode, Intent data) {
40-
data.putParcelableArrayListExtra(ControllerConstants.EXTRA_PROVIDERS, mParcelables);
41-
super.finish(resultCode, data);
4234
}
4335

4436
@Override

0 commit comments

Comments
 (0)