Skip to content

Commit 45cfa8c

Browse files
author
Iain McGinniss
committed
Refactoring of intent creation and param passing
Change-Id: I6bb50aa68c9bb8a4057524f53e707b938dbd9fc8
1 parent be439e3 commit 45cfa8c

20 files changed

+392
-358
lines changed

auth/src/main/AndroidManifest.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44
<application>
55
<activity android:theme="@style/FirebaseUI.Dialog"
6-
android:name="com.firebase.ui.auth.ui.email.ConfirmRecoverPasswordActivity" >
6+
android:name="com.firebase.ui.auth.ui.email.ConfirmRecoverPasswordActivity">
77
</activity>
88
<activity android:theme="@style/FirebaseUI.Translucent" android:name="com.firebase.ui.auth.ui.email.EmailHintContainerActivity" >
99
</activity>

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

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import android.support.annotation.Nullable;
2323
import android.support.annotation.StyleRes;
2424

25+
import com.firebase.ui.auth.ui.FlowParameters;
2526
import com.firebase.ui.auth.util.CredentialsApiHelper;
2627
import com.firebase.ui.auth.choreographer.idp.provider.FacebookProvider;
2728
import com.firebase.ui.auth.choreographer.idp.provider.GoogleProvider;
@@ -230,29 +231,28 @@ public Intent build() {
230231
mFirebaseApp = getDefaultFirebaseApp();
231232
}
232233

233-
ArrayList<IDPProviderParcel> providerParcels = new ArrayList<>();
234+
ArrayList<IDPProviderParcel> providerInfo = new ArrayList<>();
234235
for (String provider : mProviders) {
235236
if (provider.equalsIgnoreCase(FACEBOOK_PROVIDER)) {
236-
providerParcels.add(FacebookProvider.createFacebookParcel(
237+
providerInfo.add(FacebookProvider.createFacebookParcel(
237238
mContext.getString(R.string.facebook_application_id)));
238239
} else if (provider.equalsIgnoreCase(GOOGLE_PROVIDER)) {
239-
providerParcels.add(GoogleProvider.createParcel(
240+
providerInfo.add(GoogleProvider.createParcel(
240241
mContext.getString(R.string.default_web_client_id)));
241242
} else if (provider.equalsIgnoreCase(EMAIL_PROVIDER)) {
242-
providerParcels.add(
243+
providerInfo.add(
243244
new IDPProviderParcel(EmailAuthProvider.PROVIDER_ID, new Bundle())
244245
);
245246
}
246247
}
247248

248249
return ChooseAccountActivity.createIntent(
249250
mContext,
250-
mFirebaseApp.getName(),
251-
mFirebaseApp.getOptions().getApiKey(),
252-
mFirebaseApp.getOptions().getApplicationId(),
253-
providerParcels,
254-
mTosUrl,
255-
mTheme);
251+
new FlowParameters(
252+
mFirebaseApp.getName(),
253+
providerInfo,
254+
mTheme,
255+
mTosUrl));
256256
}
257257

258258
private @NonNull FirebaseApp getDefaultFirebaseApp() {

auth/src/main/java/com/firebase/ui/auth/choreographer/ControllerConstants.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,4 +33,5 @@ public class ControllerConstants {
3333
public static final String EXTRA_IDP_RESPONSE = "extra_idp_response";
3434
public static final String EXTRA_ERROR_MESSAGE = "extra_error_msg";
3535
public static final String EXTRA_THEME = "extra_theme";
36+
public static final String EXTRA_FLOW_PARAMS = "extra_flow_params";
3637
}

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

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -68,10 +68,8 @@ private void startEmailHandler(String email, List<String> providers) {
6868
// account doesn't exist yet
6969
Intent registerIntent = RegisterEmailActivity.createIntent(
7070
mActivityHelper.getApplicationContext(),
71-
email,
72-
mActivityHelper.termsOfServiceUrl,
73-
mActivityHelper.appName
74-
);
71+
mActivityHelper.flowParams,
72+
email);
7573
mActivityHelper.startActivityForResult(registerIntent, RC_REGISTER_ACCOUNT);
7674
return;
7775
} else {
@@ -80,18 +78,15 @@ private void startEmailHandler(String email, List<String> providers) {
8078
if (provider.equalsIgnoreCase(EmailAuthProvider.PROVIDER_ID)) {
8179
Intent signInIntent = SignInActivity.createIntent(
8280
mActivityHelper.getApplicationContext(),
83-
mActivityHelper.appName,
84-
email,
85-
mActivityHelper.providerParcels
86-
);
81+
mActivityHelper.flowParams,
82+
email);
8783
mActivityHelper.startActivityForResult(signInIntent, RC_SIGN_IN);
8884
return;
8985
}
9086
Intent intent = WelcomeBackIDPPrompt.createIntent(
9187
mActivityHelper.getApplicationContext(),
88+
mActivityHelper.flowParams,
9289
provider,
93-
mActivityHelper.providerParcels,
94-
mActivityHelper.appName,
9590
email);
9691
mActivityHelper.startActivityForResult(intent, RC_WELCOME_BACK_IDP);
9792
return;

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

Lines changed: 19 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -18,38 +18,25 @@
1818
import android.app.ProgressDialog;
1919
import android.content.Context;
2020
import android.content.Intent;
21+
import android.support.annotation.NonNull;
2122
import android.support.annotation.StringRes;
2223

23-
import com.firebase.ui.auth.AuthUI;
2424
import com.firebase.ui.auth.choreographer.ControllerConstants;
25-
import com.firebase.ui.auth.choreographer.idp.provider.IDPProviderParcel;
2625
import com.google.firebase.FirebaseApp;
27-
import com.google.firebase.FirebaseOptions;
2826
import com.google.firebase.auth.FirebaseAuth;
2927
import com.google.firebase.auth.FirebaseUser;
3028

31-
import java.util.ArrayList;
29+
import static com.firebase.ui.auth.util.Preconditions.checkNotNull;
3230

3331
public class ActivityHelper {
3432
private ProgressDialog mProgressDialog;
3533
private Activity mActivity;
3634

37-
public String appName;
38-
public ArrayList<IDPProviderParcel> providerParcels;
39-
public String termsOfServiceUrl;
40-
public int theme;
41-
35+
public final FlowParameters flowParams;
4236

4337
public ActivityHelper(Activity activity, Intent intent) {
4438
mActivity = activity;
45-
appName = intent.getStringExtra(ControllerConstants.EXTRA_APP_NAME);
46-
providerParcels = intent.getParcelableArrayListExtra(
47-
ControllerConstants.EXTRA_PROVIDERS);
48-
termsOfServiceUrl = intent.getStringExtra(
49-
ControllerConstants.EXTRA_TERMS_OF_SERVICE_URL);
50-
theme = intent.getIntExtra(
51-
ControllerConstants.EXTRA_THEME,
52-
AuthUI.DEFAULT_THEME);
39+
flowParams = intent.getParcelableExtra(ControllerConstants.EXTRA_FLOW_PARAMS);
5340
}
5441

5542
public void dismissDialog() {
@@ -68,44 +55,25 @@ public void showLoadingDialog(@StringRes int stringResource) {
6855
showLoadingDialog(mActivity.getString(stringResource));
6956
}
7057

71-
72-
private Intent addExtras(Intent intent) {
73-
intent.putExtra(ControllerConstants.EXTRA_APP_NAME, appName)
74-
.putExtra(ControllerConstants.EXTRA_TERMS_OF_SERVICE_URL, termsOfServiceUrl)
75-
.putExtra(ControllerConstants.EXTRA_THEME, theme)
76-
.putExtra(ControllerConstants.EXTRA_PROVIDERS, providerParcels);
77-
return intent;
78-
}
79-
8058
public void startActivityForResult(Intent intent, int requestCode) {
8159
mActivity.startActivityForResult(intent, requestCode);
8260
}
8361

8462
public void finish(int resultCode, Intent intent) {
85-
mActivity.setResult(resultCode, addExtras(intent));
63+
mActivity.setResult(resultCode, intent);
8664
mActivity.finish();
8765
}
8866

8967
public Context getApplicationContext() {
9068
return mActivity.getApplicationContext();
9169
}
9270

93-
94-
public FirebaseApp getFirebaseApp() {
95-
return FirebaseApp.getInstance(appName);
71+
public String getAppName() {
72+
return flowParams.appName;
9673
}
9774

98-
public FirebaseApp getFirebaseApp(String apiaryKey, String applicationId) {
99-
try{
100-
return FirebaseApp.getInstance(appName);
101-
} catch (IllegalStateException e) {
102-
FirebaseOptions options
103-
= new FirebaseOptions.Builder()
104-
.setApiKey(apiaryKey)
105-
.setApplicationId(applicationId)
106-
.build();
107-
return FirebaseApp.initializeApp(mActivity, options, appName);
108-
}
75+
public FirebaseApp getFirebaseApp() {
76+
return FirebaseApp.getInstance(flowParams.appName);
10977
}
11078

11179
public FirebaseAuth getFirebaseAuth() {
@@ -116,4 +84,14 @@ public FirebaseUser getCurrentUser() {
11684
return getFirebaseAuth().getCurrentUser();
11785
}
11886

87+
public static Intent createBaseIntent(
88+
@NonNull Context context,
89+
@NonNull Class<? extends Activity> target,
90+
@NonNull FlowParameters flowParams) {
91+
return new Intent(
92+
checkNotNull(context, "context cannot be null"),
93+
checkNotNull(target, "target activity cannot be null"))
94+
.putExtra(ControllerConstants.EXTRA_FLOW_PARAMS,
95+
checkNotNull(flowParams, "flowParams cannot be null"));
96+
}
11997
}
Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
/*
2+
* Copyright 2016 Google Inc. All Rights Reserved.
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
5+
* in compliance with the License. You may obtain a copy of the License at
6+
*
7+
* http://www.apache.org/licenses/LICENSE-2.0
8+
*
9+
* Unless required by applicable law or agreed to in writing, software distributed under the
10+
* License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
11+
* express or implied. See the License for the specific language governing permissions and
12+
* limitations under the License.
13+
*/
14+
package com.firebase.ui.auth.ui;
15+
16+
import android.os.Parcel;
17+
import android.os.Parcelable;
18+
import android.support.annotation.NonNull;
19+
import android.support.annotation.Nullable;
20+
import android.support.annotation.StyleRes;
21+
22+
import com.firebase.ui.auth.choreographer.idp.provider.IDPProviderParcel;
23+
import com.firebase.ui.auth.util.Preconditions;
24+
25+
import java.util.List;
26+
27+
/**
28+
* Encapsulates the core parameters and data captured during the authentication flow, in
29+
* a serializable manner, in order to pass data between activities.
30+
*/
31+
public class FlowParameters implements Parcelable {
32+
33+
@NonNull
34+
public final String appName;
35+
36+
@NonNull
37+
public final List<IDPProviderParcel> providerInfo;
38+
39+
@StyleRes
40+
public final int themeId;
41+
42+
@Nullable
43+
public final String termsOfServiceUrl;
44+
45+
public FlowParameters(
46+
@NonNull String appName,
47+
@NonNull List<IDPProviderParcel> providerInfo,
48+
@StyleRes int themeId,
49+
@Nullable String termsOfServiceUrl) {
50+
this.appName = Preconditions.checkNotNull(appName, "appName cannot be null");
51+
this.providerInfo = Preconditions.checkNotNull(providerInfo, "providerInfo cannot be null");
52+
this.themeId = themeId;
53+
this.termsOfServiceUrl = termsOfServiceUrl;
54+
}
55+
56+
@Override
57+
public void writeToParcel(Parcel dest, int flags) {
58+
dest.writeString(appName);
59+
dest.writeTypedList(providerInfo);
60+
dest.writeInt(themeId);
61+
dest.writeString(termsOfServiceUrl);
62+
}
63+
64+
@Override
65+
public int describeContents() {
66+
return 0;
67+
}
68+
69+
public static final Creator<FlowParameters> CREATOR = new Creator<FlowParameters>() {
70+
@Override
71+
public FlowParameters createFromParcel(Parcel in) {
72+
String appName = in.readString();
73+
List<IDPProviderParcel> providerInfo =
74+
in.createTypedArrayList(IDPProviderParcel.CREATOR);
75+
int themeId = in.readInt();
76+
String termsOfServiceUrl = in.readString();
77+
return new FlowParameters(appName, providerInfo, themeId, termsOfServiceUrl);
78+
}
79+
80+
@Override
81+
public FlowParameters[] newArray(int size) {
82+
return new FlowParameters[size];
83+
}
84+
};
85+
}

0 commit comments

Comments
 (0)