Skip to content

Auth instances cleanup #786

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 15 commits into from
Jul 11, 2017
8 changes: 8 additions & 0 deletions auth/src/main/java/com/firebase/ui/auth/ui/FragmentBase.java
Original file line number Diff line number Diff line change
Expand Up @@ -8,16 +8,20 @@
import android.support.v4.app.Fragment;
import android.view.ContextThemeWrapper;

import com.firebase.ui.auth.util.AuthHelper;

@RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
public class FragmentBase extends Fragment {

private FlowParameters mFlowParameters;
private AuthHelper mAuthHelper;
private ProgressDialogHolder mProgressDialogHolder;

@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

mAuthHelper = new AuthHelper(getFlowParams());
ContextThemeWrapper context = new ContextThemeWrapper(
getContext(), getFlowParams().themeId);
mProgressDialogHolder = new ProgressDialogHolder(context);
Expand All @@ -37,6 +41,10 @@ public FlowParameters getFlowParams() {
return mFlowParameters;
}

public AuthHelper getAuthHelper() {
return mAuthHelper;
}

public ProgressDialogHolder getDialogHolder() {
return mProgressDialogHolder;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@

import com.firebase.ui.auth.IdpResponse;
import com.firebase.ui.auth.ResultCodes;
import com.firebase.ui.auth.util.AuthHelper;
import com.firebase.ui.auth.util.signincontainer.SaveSmartLock;
import com.google.firebase.auth.FirebaseUser;

Expand All @@ -21,6 +22,7 @@
public class HelperActivityBase extends AppCompatActivity {

private FlowParameters mFlowParameters;
private AuthHelper mAuthHelper;
private ProgressDialogHolder mProgressDialogHolder;

public static Intent createBaseIntent(
Expand All @@ -37,6 +39,7 @@ public static Intent createBaseIntent(
@Override
protected void onCreate(Bundle savedInstance) {
super.onCreate(savedInstance);
mAuthHelper = new AuthHelper(getFlowParams());
mProgressDialogHolder = new ProgressDialogHolder(this);
}

Expand All @@ -54,6 +57,10 @@ public FlowParameters getFlowParams() {
return mFlowParameters;
}

public AuthHelper getAuthHelper() {
return mAuthHelper;
}

public ProgressDialogHolder getDialogHolder() {
return mProgressDialogHolder;
}
Expand Down Expand Up @@ -84,4 +91,3 @@ public void saveCredentialsOrFinish(
}

}

Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,6 @@
import com.firebase.ui.auth.ui.HelperActivityBase;
import com.firebase.ui.auth.ui.TaskFailureLogger;
import com.firebase.ui.auth.ui.User;
import com.firebase.ui.auth.util.AuthInstances;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.OnFailureListener;
import com.google.android.gms.tasks.OnSuccessListener;
Expand Down Expand Up @@ -148,9 +147,9 @@ public void onSuccess(final IdpResponse idpResponse) {
return;
}

FirebaseUser currentUser = AuthInstances.getCurrentUser(getFlowParams());
FirebaseUser currentUser = getAuthHelper().getCurrentUser();
if (currentUser == null) {
AuthInstances.getFirebaseAuth(getFlowParams())
getAuthHelper().getFirebaseAuth()
.signInWithCredential(newCredential)
.addOnSuccessListener(new OnSuccessListener<AuthResult>() {
@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,6 @@
import com.firebase.ui.auth.ui.ImeHelper;
import com.firebase.ui.auth.ui.TaskFailureLogger;
import com.firebase.ui.auth.ui.email.RecoverPasswordActivity;
import com.firebase.ui.auth.util.AuthInstances;
import com.firebase.ui.auth.util.signincontainer.SaveSmartLock;
import com.google.android.gms.tasks.OnFailureListener;
import com.google.android.gms.tasks.OnSuccessListener;
Expand Down Expand Up @@ -84,8 +83,7 @@ protected void onCreate(Bundle savedInstanceState) {
// Show keyboard
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE);

mSaveSmartLock = AuthInstances.getSaveSmartLockInstance(
this, getFlowParams());
mSaveSmartLock = getAuthHelper().getSaveSmartLockInstance(this);
mIdpResponse = IdpResponse.fromResultIntent(getIntent());
mEmail = mIdpResponse.getEmail();

Expand Down Expand Up @@ -145,7 +143,7 @@ private void validateAndSignIn(final String email, final String password) {
}
getDialogHolder().showLoadingDialog(R.string.progress_dialog_signing_in);

final FirebaseAuth firebaseAuth = AuthInstances.getFirebaseAuth(getFlowParams());
final FirebaseAuth firebaseAuth = getAuthHelper().getFirebaseAuth();

// Sign in with known email and the password provided
firebaseAuth.signInWithEmailAndPassword(email, password)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@
import com.firebase.ui.auth.ui.ImeHelper;
import com.firebase.ui.auth.ui.User;
import com.firebase.ui.auth.ui.email.fieldvalidators.EmailFieldValidator;
import com.firebase.ui.auth.util.AuthInstances;
import com.firebase.ui.auth.util.GoogleApiHelper;
import com.google.android.gms.auth.api.Auth;
import com.google.android.gms.auth.api.credentials.Credential;
Expand Down Expand Up @@ -193,7 +192,7 @@ private void checkAccountExists(@NonNull final String email) {
final String finalName = name;
final Uri finalPhotoUri = photoUri;

FirebaseAuth auth = AuthInstances.getFirebaseAuth(getFlowParams());
FirebaseAuth auth = getAuthHelper().getFirebaseAuth();
ProviderUtils.fetchTopProvider(auth, email)
.addOnSuccessListener(getActivity(), new OnSuccessListener<String>() {
@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,6 @@
import com.firebase.ui.auth.ui.HelperActivityBase;
import com.firebase.ui.auth.ui.TaskFailureLogger;
import com.firebase.ui.auth.ui.email.fieldvalidators.EmailFieldValidator;
import com.firebase.ui.auth.util.AuthInstances;
import com.google.android.gms.tasks.OnFailureListener;
import com.google.android.gms.tasks.OnSuccessListener;
import com.google.firebase.auth.FirebaseAuthInvalidUserException;
Expand Down Expand Up @@ -68,7 +67,7 @@ protected void onCreate(Bundle savedInstanceState) {
}

private void next(final String email) {
AuthInstances.getFirebaseAuth(getFlowParams())
getAuthHelper().getFirebaseAuth()
.sendPasswordResetEmail(email)
.addOnFailureListener(
new TaskFailureLogger(TAG, "Error sending password reset email"))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,6 @@
import com.firebase.ui.auth.ui.email.fieldvalidators.EmailFieldValidator;
import com.firebase.ui.auth.ui.email.fieldvalidators.PasswordFieldValidator;
import com.firebase.ui.auth.ui.email.fieldvalidators.RequiredFieldValidator;
import com.firebase.ui.auth.util.AuthInstances;
import com.firebase.ui.auth.util.signincontainer.SaveSmartLock;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.OnFailureListener;
Expand Down Expand Up @@ -166,7 +165,7 @@ public void onActivityCreated(@Nullable Bundle savedInstanceState) {
}

mActivity = (HelperActivityBase) getActivity();
mSaveSmartLock = AuthInstances.getSaveSmartLockInstance(getActivity(), getFlowParams());
mSaveSmartLock = getAuthHelper().getSaveSmartLockInstance(mActivity);
new PreambleHandler(getContext(), getFlowParams(), R.string.button_text_save)
.setPreamble(mAgreementText);
}
Expand Down Expand Up @@ -222,7 +221,7 @@ private void validateAndRegisterUser() {
}

private void registerUser(final String email, final String name, final String password) {
AuthInstances.getFirebaseAuth(getFlowParams())
getAuthHelper().getFirebaseAuth()
.createUserWithEmailAndPassword(email, password)
.addOnFailureListener(new TaskFailureLogger(TAG, "Error creating user"))
.addOnSuccessListener(new OnSuccessListener<AuthResult>() {
Expand Down Expand Up @@ -267,7 +266,7 @@ public void onFailure(@NonNull Exception e) {
// Collision with existing user email, it should be very hard for
// the user to even get to this error due to CheckEmailFragment.

FirebaseAuth auth = AuthInstances.getFirebaseAuth(getFlowParams());
FirebaseAuth auth = getAuthHelper().getFirebaseAuth();
ProviderUtils.fetchTopProvider(auth, email).addOnSuccessListener(
getActivity(),
new OnSuccessListener<String>() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,6 @@
import com.firebase.ui.auth.ui.HelperActivityBase;
import com.firebase.ui.auth.ui.TaskFailureLogger;
import com.firebase.ui.auth.ui.email.RegisterEmailActivity;
import com.firebase.ui.auth.util.AuthInstances;
import com.firebase.ui.auth.util.signincontainer.SaveSmartLock;
import com.google.firebase.auth.AuthCredential;

Expand Down Expand Up @@ -74,7 +73,7 @@ public static Intent createIntent(Context context, FlowParameters flowParams) {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.auth_method_picker_layout);
mSaveSmartLock = AuthInstances.getSaveSmartLockInstance(this, getFlowParams());
mSaveSmartLock = getAuthHelper().getSaveSmartLockInstance(this);

populateIdpList(getFlowParams().providerInfo);

Expand Down Expand Up @@ -149,7 +148,7 @@ public void onActivityResult(int requestCode, int resultCode, Intent data) {
@Override
public void onSuccess(final IdpResponse response) {
AuthCredential credential = ProviderUtils.getAuthCredential(response);
AuthInstances.getFirebaseAuth(getFlowParams())
getAuthHelper().getFirebaseAuth()
.signInWithCredential(credential)
.addOnFailureListener(
new TaskFailureLogger(TAG, "Firebase sign in with credential "
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,6 @@
import com.firebase.ui.auth.ui.User;
import com.firebase.ui.auth.ui.accountlink.WelcomeBackIdpPrompt;
import com.firebase.ui.auth.ui.accountlink.WelcomeBackPasswordPrompt;
import com.firebase.ui.auth.util.AuthInstances;
import com.firebase.ui.auth.util.signincontainer.SaveSmartLock;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.OnFailureListener;
Expand Down Expand Up @@ -70,7 +69,7 @@ public void onComplete(@NonNull Task<AuthResult> task) {
if (task.getException() instanceof FirebaseAuthUserCollisionException) {
String email = mResponse.getEmail();
if (email != null) {
FirebaseAuth auth = AuthInstances.getFirebaseAuth(mActivity.getFlowParams());
FirebaseAuth auth = mActivity.getAuthHelper().getFirebaseAuth();
ProviderUtils.fetchTopProvider(auth, email)
.addOnSuccessListener(new StartWelcomeBackFlow())
.addOnFailureListener(new OnFailureListener() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,6 @@
import com.firebase.ui.auth.ui.ExtraConstants;
import com.firebase.ui.auth.ui.FlowParameters;
import com.firebase.ui.auth.ui.HelperActivityBase;
import com.firebase.ui.auth.util.AuthInstances;
import com.google.android.gms.tasks.OnFailureListener;
import com.google.android.gms.tasks.OnSuccessListener;
import com.google.firebase.FirebaseException;
Expand Down Expand Up @@ -122,7 +121,7 @@ protected void onStart() {
sendCode(mPhoneNumber, false);
} else if (mVerificationState == VerificationState.VERIFIED) {
// activity was recreated when verified dialog was displayed
finish(AuthInstances.getCurrentUser(getFlowParams()));
finish(getAuthHelper().getCurrentUser());
}
}

Expand Down Expand Up @@ -233,7 +232,7 @@ private void sendCode(String phoneNumber, boolean forceResend) {
mPhoneNumber = phoneNumber;
mVerificationState = VerificationState.VERIFICATION_STARTED;

AuthInstances.getPhoneAuthProviderInstance().verifyPhoneNumber(
getAuthHelper().getPhoneAuthProviderInstance().verifyPhoneNumber(
phoneNumber,
AUTO_RETRIEVAL_TIMEOUT_MILLIS,
TimeUnit.MILLISECONDS,
Expand Down Expand Up @@ -306,7 +305,7 @@ private void showAlertDialog(@NonNull String s, DialogInterface.OnClickListener
}

private void signingWithCreds(@NonNull PhoneAuthCredential phoneAuthCredential) {
AuthInstances.getFirebaseAuth(getFlowParams())
getAuthHelper().getFirebaseAuth()
.signInWithCredential(phoneAuthCredential)
.addOnSuccessListener(this, new OnSuccessListener<AuthResult>() {
@Override
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
package com.firebase.ui.auth.util;

import android.support.annotation.Nullable;
import android.support.v4.app.FragmentActivity;

import com.firebase.ui.auth.ui.FlowParameters;
import com.firebase.ui.auth.ui.HelperActivityBase;
import com.firebase.ui.auth.util.signincontainer.SaveSmartLock;
import com.google.android.gms.auth.api.Auth;
import com.google.android.gms.auth.api.credentials.CredentialsApi;
Expand All @@ -16,29 +16,31 @@
* Factory for instances of authentication classes. Should eventually be replaced by dependency
* injection.
*/
public class AuthInstances {
public class AuthHelper {
private final FlowParameters mFlowParams;

public static FirebaseAuth getFirebaseAuth(FlowParameters parameters) {
return FirebaseAuth.getInstance(FirebaseApp.getInstance(parameters.appName));
public AuthHelper(FlowParameters params) {
mFlowParams = params;
}

public static CredentialsApi getCredentialsApi() {
public FirebaseAuth getFirebaseAuth() {
return FirebaseAuth.getInstance(FirebaseApp.getInstance(mFlowParams.appName));
}

public CredentialsApi getCredentialsApi() {
return Auth.CredentialsApi;
}

@Nullable
public static FirebaseUser getCurrentUser(FlowParameters parameters) {
return getFirebaseAuth(parameters).getCurrentUser();
public FirebaseUser getCurrentUser() {
return getFirebaseAuth().getCurrentUser();
}

public static SaveSmartLock getSaveSmartLockInstance(FragmentActivity activity,
FlowParameters parameters) {
return SaveSmartLock.getInstance(activity, parameters);
public SaveSmartLock getSaveSmartLockInstance(HelperActivityBase activity) {
return SaveSmartLock.getInstance(activity);
}

public static PhoneAuthProvider getPhoneAuthProviderInstance() {
public PhoneAuthProvider getPhoneAuthProviderInstance() {
return PhoneAuthProvider.getInstance();
}


}
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,6 @@
import com.firebase.ui.auth.ui.TaskFailureLogger;
import com.firebase.ui.auth.ui.User;
import com.firebase.ui.auth.ui.idp.CredentialSignInHandler;
import com.firebase.ui.auth.util.AuthInstances;
import com.google.firebase.auth.AuthCredential;
import com.google.firebase.auth.FacebookAuthProvider;
import com.google.firebase.auth.GoogleAuthProvider;
Expand Down Expand Up @@ -86,7 +85,7 @@ public static IdpSignInContainer getInstance(FragmentActivity activity) {
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mSaveSmartLock = AuthInstances.getSaveSmartLockInstance(getActivity(), getFlowParams());
mSaveSmartLock = getAuthHelper().getSaveSmartLockInstance(mActivity);

User user = User.getUser(getArguments());
String provider = user.getProvider();
Expand Down Expand Up @@ -143,7 +142,7 @@ public void onSaveInstanceState(Bundle outState) {
@Override
public void onSuccess(final IdpResponse response) {
AuthCredential credential = ProviderUtils.getAuthCredential(response);
AuthInstances.getFirebaseAuth(getFlowParams())
getAuthHelper().getFirebaseAuth()
.signInWithCredential(credential)
.addOnFailureListener(
new TaskFailureLogger(TAG, "Failure authenticating with credential " +
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@
import android.support.annotation.Nullable;
import android.support.annotation.RestrictTo;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.text.TextUtils;
import android.util.Log;
Expand All @@ -33,8 +32,7 @@
import com.firebase.ui.auth.IdpResponse;
import com.firebase.ui.auth.R;
import com.firebase.ui.auth.ResultCodes;
import com.firebase.ui.auth.ui.FlowParameters;
import com.firebase.ui.auth.util.AuthInstances;
import com.firebase.ui.auth.ui.HelperActivityBase;
import com.firebase.ui.auth.util.GoogleApiHelper;
import com.firebase.ui.auth.util.PlayServicesHelper;
import com.google.android.gms.auth.api.Auth;
Expand All @@ -59,14 +57,14 @@ public class SaveSmartLock extends SmartLockBase<Status> {
private IdpResponse mResponse;

@Nullable
public static SaveSmartLock getInstance(FragmentActivity activity, FlowParameters parameters) {
public static SaveSmartLock getInstance(HelperActivityBase activity) {
SaveSmartLock result;

FragmentManager fm = activity.getSupportFragmentManager();
Fragment fragment = fm.findFragmentByTag(TAG);
if (!(fragment instanceof SaveSmartLock)) {
result = new SaveSmartLock();
result.setArguments(parameters.toBundle());
result.setArguments(activity.getFlowParams().toBundle());
try {
fm.beginTransaction().add(result, TAG).disallowAddToBackStack().commit();
} catch (IllegalStateException e) {
Expand Down Expand Up @@ -115,7 +113,7 @@ public void onConnected(Bundle bundle) {
builder.setProfilePictureUri(Uri.parse(mProfilePictureUri));
}

AuthInstances.getCredentialsApi()
getAuthHelper().getCredentialsApi()
.save(mGoogleApiClient, builder.build())
.setResultCallback(this);
}
Expand Down Expand Up @@ -173,7 +171,7 @@ public void onActivityResult(int requestCode, int resultCode, Intent data) {
Credential credential = new Credential.Builder(mEmail).setPassword(mPassword)
.build();

AuthInstances.getCredentialsApi()
getAuthHelper().getCredentialsApi()
.save(mGoogleApiClient, credential)
.setResultCallback(this);
} else {
Expand Down
Loading