From eee14c946aa23644c0a12eb89d8f6db4366a90e1 Mon Sep 17 00:00:00 2001 From: Alex Saveau Date: Tue, 12 Jun 2018 18:31:37 -0700 Subject: [PATCH 1/3] Add new user information Signed-off-by: Alex Saveau --- .../uidemo/auth/SignedInActivity.java | 12 ++++- app/src/main/res/layout/signed_in_layout.xml | 6 +++ .../com/firebase/ui/auth/IdpResponse.java | 53 +++++++++++++++++-- .../auth/data/remote/SignInKickstarter.java | 2 +- .../email/EmailProviderResponseHandler.java | 2 +- .../email/WelcomeBackPasswordHandler.java | 2 +- .../LinkingSocialProviderResponseHandler.java | 31 ++++++----- .../idp/SocialProviderResponseHandler.java | 2 +- .../phone/PhoneProviderResponseHandler.java | 2 +- 9 files changed, 88 insertions(+), 24 deletions(-) diff --git a/app/src/main/java/com/firebase/uidemo/auth/SignedInActivity.java b/app/src/main/java/com/firebase/uidemo/auth/SignedInActivity.java index 6917ea8e5..6bf7a3b09 100644 --- a/app/src/main/java/com/firebase/uidemo/auth/SignedInActivity.java +++ b/app/src/main/java/com/firebase/uidemo/auth/SignedInActivity.java @@ -64,6 +64,7 @@ public class SignedInActivity extends AppCompatActivity { @BindView(R.id.user_display_name) TextView mUserDisplayName; @BindView(R.id.user_phone_number) TextView mUserPhoneNumber; @BindView(R.id.user_enabled_providers) TextView mEnabledProviders; + @BindView(R.id.user_is_new) TextView mIsNewUser; public static Intent createIntent(Context context, IdpResponse idpResponse) { return new Intent().setClass(context, SignedInActivity.class) @@ -85,7 +86,7 @@ public void onCreate(@Nullable Bundle savedInstanceState) { setContentView(R.layout.signed_in_layout); ButterKnife.bind(this); - populateProfile(); + populateProfile(response); populateIdpToken(response); } @@ -137,7 +138,7 @@ public void onComplete(@NonNull Task task) { }); } - private void populateProfile() { + private void populateProfile(@Nullable IdpResponse response) { FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser(); if (user.getPhotoUrl() != null) { GlideApp.with(this) @@ -153,6 +154,13 @@ private void populateProfile() { mUserDisplayName.setText( TextUtils.isEmpty(user.getDisplayName()) ? "No display name" : user.getDisplayName()); + if (response == null) { + mIsNewUser.setVisibility(View.GONE); + } else { + mIsNewUser.setVisibility(View.VISIBLE); + mIsNewUser.setText(response.isNewUser() ? "New user" : "Existing user"); + } + List providers = new ArrayList<>(); if (user.getProviderData().isEmpty()) { providers.add("Anonymous"); diff --git a/app/src/main/res/layout/signed_in_layout.xml b/app/src/main/res/layout/signed_in_layout.xml index 37e53875c..5e53d2fa6 100644 --- a/app/src/main/res/layout/signed_in_layout.xml +++ b/app/src/main/res/layout/signed_in_layout.xml @@ -103,6 +103,12 @@ android:layout_height="wrap_content" android:textIsSelectable="true" /> + + diff --git a/auth/src/main/java/com/firebase/ui/auth/IdpResponse.java b/auth/src/main/java/com/firebase/ui/auth/IdpResponse.java index 509eed06e..b0e24595e 100644 --- a/auth/src/main/java/com/firebase/ui/auth/IdpResponse.java +++ b/auth/src/main/java/com/firebase/ui/auth/IdpResponse.java @@ -24,6 +24,7 @@ import com.firebase.ui.auth.data.model.User; import com.firebase.ui.auth.util.ExtraConstants; +import com.google.firebase.auth.AuthResult; import com.google.firebase.auth.GoogleAuthProvider; import com.google.firebase.auth.TwitterAuthProvider; @@ -42,6 +43,7 @@ public IdpResponse createFromParcel(Parcel in) { in.readParcelable(User.class.getClassLoader()), in.readString(), in.readString(), + in.readInt() == 1, (FirebaseUiException) in.readSerializable() ); } @@ -56,28 +58,32 @@ public IdpResponse[] newArray(int size) { private final String mToken; private final String mSecret; + private final boolean mIsNewUser; private final FirebaseUiException mException; private IdpResponse(@NonNull FirebaseUiException e) { - this(null, null, null, e); + this(null, null, null, false, e); } private IdpResponse( @NonNull User user, @Nullable String token, - @Nullable String secret) { - this(user, token, secret, null); + @Nullable String secret, + boolean isNewUser) { + this(user, token, secret, isNewUser, null); } private IdpResponse( User user, String token, String secret, + boolean isNewUser, FirebaseUiException e) { mUser = user; mToken = token; mSecret = secret; + mIsNewUser = isNewUser; mException = e; } @@ -96,6 +102,12 @@ public static IdpResponse fromResultIntent(@Nullable Intent resultIntent) { } } + @NonNull + @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP) + public IdpResponse withResult(AuthResult result) { + return mutate().setNewUser(result.getAdditionalUserInfo().isNewUser()).build(); + } + @NonNull @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP) public static IdpResponse from(@NonNull Exception e) { @@ -120,6 +132,15 @@ public Intent toIntent() { return new Intent().putExtra(ExtraConstants.IDP_RESPONSE, this); } + @NonNull + @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP) + public Builder mutate() { + if (!isSuccessful()) { + throw new IllegalStateException("Cannot mutate an unsuccessful response."); + } + return new Builder(this); + } + @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP) public boolean isSuccessful() { return mException == null; @@ -139,6 +160,13 @@ public String getProviderType() { return mUser.getProviderId(); } + /** + * Returns true if this user has just signed up, false otherwise. + */ + public boolean isNewUser() { + return mIsNewUser; + } + /** * Get the email used to sign in. */ @@ -189,6 +217,7 @@ public void writeToParcel(Parcel dest, int flags) { dest.writeParcelable(mUser, flags); dest.writeString(mToken); dest.writeString(mSecret); + dest.writeInt(mIsNewUser ? 1 : 0); ObjectOutputStream oos = null; try { @@ -224,6 +253,7 @@ public boolean equals(Object o) { return (mUser == null ? response.mUser == null : mUser.equals(response.mUser)) && (mToken == null ? response.mToken == null : mToken.equals(response.mToken)) && (mSecret == null ? response.mSecret == null : mSecret.equals(response.mSecret)) + && (mIsNewUser == response.mIsNewUser) && (mException == null ? response.mException == null : mException.equals(response.mException)); } @@ -232,6 +262,7 @@ public int hashCode() { int result = mUser == null ? 0 : mUser.hashCode(); result = 31 * result + (mToken == null ? 0 : mToken.hashCode()); result = 31 * result + (mSecret == null ? 0 : mSecret.hashCode()); + result = 31 * result + (mIsNewUser ? 1 : 0); result = 31 * result + (mException == null ? 0 : mException.hashCode()); return result; } @@ -242,6 +273,7 @@ public String toString() { "mUser=" + mUser + ", mToken='" + mToken + '\'' + ", mSecret='" + mSecret + '\'' + + ", mIsNewUser='" + mIsNewUser + '\'' + ", mException=" + mException + '}'; } @@ -252,11 +284,24 @@ public static class Builder { private String mToken; private String mSecret; + private boolean mIsNewUser; public Builder(@NonNull User user) { mUser = user; } + public Builder(@NonNull IdpResponse response) { + mUser = response.mUser; + mToken = response.mToken; + mSecret = response.mSecret; + mIsNewUser = response.mIsNewUser; + } + + public Builder setNewUser(boolean newUser) { + mIsNewUser = newUser; + return this; + } + public Builder setToken(String token) { mToken = token; return this; @@ -282,7 +327,7 @@ public IdpResponse build() { "Secret cannot be null when using the Twitter provider."); } - return new IdpResponse(mUser, mToken, mSecret); + return new IdpResponse(mUser, mToken, mSecret, mIsNewUser); } } } diff --git a/auth/src/main/java/com/firebase/ui/auth/data/remote/SignInKickstarter.java b/auth/src/main/java/com/firebase/ui/auth/data/remote/SignInKickstarter.java index e91ada22b..f65774827 100644 --- a/auth/src/main/java/com/firebase/ui/auth/data/remote/SignInKickstarter.java +++ b/auth/src/main/java/com/firebase/ui/auth/data/remote/SignInKickstarter.java @@ -207,7 +207,7 @@ private void handleCredential(final Credential credential) { .addOnSuccessListener(new OnSuccessListener() { @Override public void onSuccess(AuthResult result) { - setResult(Resource.forSuccess(response)); + setResult(Resource.forSuccess(response.withResult(result))); } }) .addOnFailureListener(new OnFailureListener() { diff --git a/auth/src/main/java/com/firebase/ui/auth/viewmodel/email/EmailProviderResponseHandler.java b/auth/src/main/java/com/firebase/ui/auth/viewmodel/email/EmailProviderResponseHandler.java index 5e265b5d4..3fb9b40d5 100644 --- a/auth/src/main/java/com/firebase/ui/auth/viewmodel/email/EmailProviderResponseHandler.java +++ b/auth/src/main/java/com/firebase/ui/auth/viewmodel/email/EmailProviderResponseHandler.java @@ -47,7 +47,7 @@ public void startSignIn(@NonNull final IdpResponse response, @NonNull String pas .addOnSuccessListener(new OnSuccessListener() { @Override public void onSuccess(AuthResult result) { - setResult(Resource.forSuccess(response)); + setResult(Resource.forSuccess(response.withResult(result))); } }) .addOnFailureListener(new OnFailureListener() { diff --git a/auth/src/main/java/com/firebase/ui/auth/viewmodel/email/WelcomeBackPasswordHandler.java b/auth/src/main/java/com/firebase/ui/auth/viewmodel/email/WelcomeBackPasswordHandler.java index 198498e4a..8de0c61f2 100644 --- a/auth/src/main/java/com/firebase/ui/auth/viewmodel/email/WelcomeBackPasswordHandler.java +++ b/auth/src/main/java/com/firebase/ui/auth/viewmodel/email/WelcomeBackPasswordHandler.java @@ -88,7 +88,7 @@ public void onComplete(@NonNull Task task) { return; } - setResult(Resource.forSuccess(outputResponse)); + setResult(Resource.forSuccess(outputResponse.withResult(task.getResult()))); } }) .addOnFailureListener( diff --git a/auth/src/main/java/com/firebase/ui/auth/viewmodel/idp/LinkingSocialProviderResponseHandler.java b/auth/src/main/java/com/firebase/ui/auth/viewmodel/idp/LinkingSocialProviderResponseHandler.java index 4b65d6b96..241f78839 100644 --- a/auth/src/main/java/com/firebase/ui/auth/viewmodel/idp/LinkingSocialProviderResponseHandler.java +++ b/auth/src/main/java/com/firebase/ui/auth/viewmodel/idp/LinkingSocialProviderResponseHandler.java @@ -45,31 +45,36 @@ public void startSignIn(@NonNull final IdpResponse response) { FirebaseUser currentUser = getCurrentUser(); if (currentUser == null) { getAuth().signInWithCredential(credential) - .continueWithTask(new Continuation>() { + .continueWithTask(new Continuation>() { @Override - public Task then(@NonNull Task task) { - AuthResult result = task.getResult(); + public Task then(@NonNull Task task) { + final AuthResult result = task.getResult(); if (mRequestedSignInCredential == null) { - return Tasks.forResult(null); + return Tasks.forResult(result); } else { return result.getUser() .linkWithCredential(mRequestedSignInCredential) - .continueWith(new Continuation() { + .continueWith(new Continuation() { @Override - public Void then(@NonNull Task task) { - // Since we've already signed in, it's too late to - // backtrack so we just ignore any errors. - return null; + public AuthResult then(@NonNull Task task) { + if (task.isSuccessful()) { + return task.getResult(); + } else { + // Since we've already signed in, it's too late + // to backtrack so we just ignore any errors. + return result; + } } }); } } }) - .addOnCompleteListener(new OnCompleteListener() { + .addOnCompleteListener(new OnCompleteListener() { @Override - public void onComplete(@NonNull Task task) { + public void onComplete(@NonNull Task task) { if (task.isSuccessful()) { - setResult(Resource.forSuccess(response)); + setResult(Resource.forSuccess( + response.withResult(task.getResult()))); } else { setResult(Resource.forFailure(task.getException())); } @@ -82,7 +87,7 @@ public void onComplete(@NonNull Task task) { public void onComplete(@NonNull Task task) { // I'm not sure why we ignore failures here, but this mirrors previous // behavior. - setResult(Resource.forSuccess(response)); + setResult(Resource.forSuccess(response.withResult(task.getResult()))); } }); } diff --git a/auth/src/main/java/com/firebase/ui/auth/viewmodel/idp/SocialProviderResponseHandler.java b/auth/src/main/java/com/firebase/ui/auth/viewmodel/idp/SocialProviderResponseHandler.java index 09524c437..ca874f6bb 100644 --- a/auth/src/main/java/com/firebase/ui/auth/viewmodel/idp/SocialProviderResponseHandler.java +++ b/auth/src/main/java/com/firebase/ui/auth/viewmodel/idp/SocialProviderResponseHandler.java @@ -48,7 +48,7 @@ public void startSignIn(@NonNull final IdpResponse response) { .addOnSuccessListener(new OnSuccessListener() { @Override public void onSuccess(AuthResult result) { - setResult(Resource.forSuccess(response)); + setResult(Resource.forSuccess(response.withResult(result))); } }) .addOnFailureListener(new OnFailureListener() { diff --git a/auth/src/main/java/com/firebase/ui/auth/viewmodel/phone/PhoneProviderResponseHandler.java b/auth/src/main/java/com/firebase/ui/auth/viewmodel/phone/PhoneProviderResponseHandler.java index 0c52c08c5..2398c1587 100644 --- a/auth/src/main/java/com/firebase/ui/auth/viewmodel/phone/PhoneProviderResponseHandler.java +++ b/auth/src/main/java/com/firebase/ui/auth/viewmodel/phone/PhoneProviderResponseHandler.java @@ -36,7 +36,7 @@ public void startSignIn(@NonNull PhoneAuthCredential credential, @Override public void onComplete(@NonNull Task task) { if (task.isSuccessful()) { - setResult(Resource.forSuccess(response)); + setResult(Resource.forSuccess(response.withResult(task.getResult()))); } else { setResult(Resource.forFailure(task.getException())); } From c604b67eb4a4b1b5d60c9be36d103ae8e97a8919 Mon Sep 17 00:00:00 2001 From: Alex Saveau Date: Tue, 12 Jun 2018 19:40:54 -0700 Subject: [PATCH 2/3] Fix tests Signed-off-by: Alex Saveau --- .../testhelpers/FakeAdditionalUserInfo.java | 44 +++++++++++++++++++ .../ui/auth/testhelpers/FakeAuthResult.java | 2 +- 2 files changed, 45 insertions(+), 1 deletion(-) create mode 100644 auth/src/test/java/com/firebase/ui/auth/testhelpers/FakeAdditionalUserInfo.java diff --git a/auth/src/test/java/com/firebase/ui/auth/testhelpers/FakeAdditionalUserInfo.java b/auth/src/test/java/com/firebase/ui/auth/testhelpers/FakeAdditionalUserInfo.java new file mode 100644 index 000000000..4ed653543 --- /dev/null +++ b/auth/src/test/java/com/firebase/ui/auth/testhelpers/FakeAdditionalUserInfo.java @@ -0,0 +1,44 @@ +package com.firebase.ui.auth.testhelpers; + +import android.os.Parcel; + +import com.google.firebase.auth.AdditionalUserInfo; + +import java.util.Map; + +public final class FakeAdditionalUserInfo implements AdditionalUserInfo { + public static final AdditionalUserInfo INSTANCE = new FakeAdditionalUserInfo(); + + // Singleton + private FakeAdditionalUserInfo() {} + + @Override + public String getProviderId() { + return null; + } + + @Override + public Map getProfile() { + return null; + } + + @Override + public String getUsername() { + return null; + } + + @Override + public boolean isNewUser() { + return false; + } + + @Override + public int describeContents() { + return 0; + } + + @Override + public void writeToParcel(Parcel parcel, int i) { + throw new IllegalStateException("Don't try to parcel FakeAuthResult!"); + } +} diff --git a/auth/src/test/java/com/firebase/ui/auth/testhelpers/FakeAuthResult.java b/auth/src/test/java/com/firebase/ui/auth/testhelpers/FakeAuthResult.java index d7a3ec861..24a5af6d6 100644 --- a/auth/src/test/java/com/firebase/ui/auth/testhelpers/FakeAuthResult.java +++ b/auth/src/test/java/com/firebase/ui/auth/testhelpers/FakeAuthResult.java @@ -42,7 +42,7 @@ public FirebaseUser getUser() { @Override public AdditionalUserInfo getAdditionalUserInfo() { - return null; + return FakeAdditionalUserInfo.INSTANCE; } @Override From bb8edadda2266dfac69ac2e5f5246c0771b1c5bb Mon Sep 17 00:00:00 2001 From: Alex Saveau Date: Wed, 13 Jun 2018 08:51:38 -0700 Subject: [PATCH 3/3] Address review feedback Signed-off-by: Alex Saveau --- .../auth/data/remote/SignInKickstarter.java | 6 ++--- .../auth/viewmodel/SignInViewModelBase.java | 25 +++++++++++++++++++ .../email/EmailProviderResponseHandler.java | 6 ++--- .../email/WelcomeBackPasswordHandler.java | 6 ++--- .../LinkingSocialProviderResponseHandler.java | 9 +++---- .../idp/SocialProviderResponseHandler.java | 6 ++--- .../phone/PhoneProviderResponseHandler.java | 6 ++--- 7 files changed, 44 insertions(+), 20 deletions(-) create mode 100644 auth/src/main/java/com/firebase/ui/auth/viewmodel/SignInViewModelBase.java diff --git a/auth/src/main/java/com/firebase/ui/auth/data/remote/SignInKickstarter.java b/auth/src/main/java/com/firebase/ui/auth/data/remote/SignInKickstarter.java index f65774827..4524bd93f 100644 --- a/auth/src/main/java/com/firebase/ui/auth/data/remote/SignInKickstarter.java +++ b/auth/src/main/java/com/firebase/ui/auth/data/remote/SignInKickstarter.java @@ -22,8 +22,8 @@ import com.firebase.ui.auth.util.ExtraConstants; import com.firebase.ui.auth.util.GoogleApiUtils; import com.firebase.ui.auth.util.data.ProviderUtils; -import com.firebase.ui.auth.viewmodel.AuthViewModelBase; import com.firebase.ui.auth.viewmodel.RequestCodes; +import com.firebase.ui.auth.viewmodel.SignInViewModelBase; import com.google.android.gms.auth.api.credentials.Credential; import com.google.android.gms.auth.api.credentials.CredentialRequest; import com.google.android.gms.auth.api.credentials.CredentialRequestResponse; @@ -46,7 +46,7 @@ import java.util.ArrayList; import java.util.List; -public class SignInKickstarter extends AuthViewModelBase { +public class SignInKickstarter extends SignInViewModelBase { public SignInKickstarter(Application application) { super(application); } @@ -207,7 +207,7 @@ private void handleCredential(final Credential credential) { .addOnSuccessListener(new OnSuccessListener() { @Override public void onSuccess(AuthResult result) { - setResult(Resource.forSuccess(response.withResult(result))); + handleSuccess(response, result); } }) .addOnFailureListener(new OnFailureListener() { diff --git a/auth/src/main/java/com/firebase/ui/auth/viewmodel/SignInViewModelBase.java b/auth/src/main/java/com/firebase/ui/auth/viewmodel/SignInViewModelBase.java new file mode 100644 index 000000000..440563c25 --- /dev/null +++ b/auth/src/main/java/com/firebase/ui/auth/viewmodel/SignInViewModelBase.java @@ -0,0 +1,25 @@ +package com.firebase.ui.auth.viewmodel; + +import android.app.Application; +import android.support.annotation.NonNull; +import android.support.annotation.RestrictTo; + +import com.firebase.ui.auth.IdpResponse; +import com.firebase.ui.auth.data.model.Resource; +import com.google.firebase.auth.AuthResult; + +@RestrictTo(RestrictTo.Scope.LIBRARY_GROUP) +public abstract class SignInViewModelBase extends AuthViewModelBase { + protected SignInViewModelBase(Application application) { + super(application); + } + + @Override + protected void setResult(Resource output) { + super.setResult(output); + } + + protected void handleSuccess(@NonNull IdpResponse response, @NonNull AuthResult result) { + setResult(Resource.forSuccess(response.withResult(result))); + } +} diff --git a/auth/src/main/java/com/firebase/ui/auth/viewmodel/email/EmailProviderResponseHandler.java b/auth/src/main/java/com/firebase/ui/auth/viewmodel/email/EmailProviderResponseHandler.java index 3fb9b40d5..0ba3dfb20 100644 --- a/auth/src/main/java/com/firebase/ui/auth/viewmodel/email/EmailProviderResponseHandler.java +++ b/auth/src/main/java/com/firebase/ui/auth/viewmodel/email/EmailProviderResponseHandler.java @@ -13,8 +13,8 @@ import com.firebase.ui.auth.ui.idp.WelcomeBackIdpPrompt; import com.firebase.ui.auth.util.data.ProviderUtils; import com.firebase.ui.auth.util.data.TaskFailureLogger; -import com.firebase.ui.auth.viewmodel.AuthViewModelBase; import com.firebase.ui.auth.viewmodel.RequestCodes; +import com.firebase.ui.auth.viewmodel.SignInViewModelBase; import com.google.android.gms.tasks.OnFailureListener; import com.google.android.gms.tasks.OnSuccessListener; import com.google.firebase.auth.AuthResult; @@ -22,7 +22,7 @@ import com.google.firebase.auth.FirebaseAuthUserCollisionException; @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP) -public class EmailProviderResponseHandler extends AuthViewModelBase { +public class EmailProviderResponseHandler extends SignInViewModelBase { private static final String TAG = "EmailProviderResponseHa"; public EmailProviderResponseHandler(Application application) { @@ -47,7 +47,7 @@ public void startSignIn(@NonNull final IdpResponse response, @NonNull String pas .addOnSuccessListener(new OnSuccessListener() { @Override public void onSuccess(AuthResult result) { - setResult(Resource.forSuccess(response.withResult(result))); + handleSuccess(response, result); } }) .addOnFailureListener(new OnFailureListener() { diff --git a/auth/src/main/java/com/firebase/ui/auth/viewmodel/email/WelcomeBackPasswordHandler.java b/auth/src/main/java/com/firebase/ui/auth/viewmodel/email/WelcomeBackPasswordHandler.java index 8de0c61f2..1527b11b6 100644 --- a/auth/src/main/java/com/firebase/ui/auth/viewmodel/email/WelcomeBackPasswordHandler.java +++ b/auth/src/main/java/com/firebase/ui/auth/viewmodel/email/WelcomeBackPasswordHandler.java @@ -10,7 +10,7 @@ import com.firebase.ui.auth.data.model.User; import com.firebase.ui.auth.data.remote.ProfileMerger; import com.firebase.ui.auth.util.data.TaskFailureLogger; -import com.firebase.ui.auth.viewmodel.AuthViewModelBase; +import com.firebase.ui.auth.viewmodel.SignInViewModelBase; import com.google.android.gms.tasks.Continuation; import com.google.android.gms.tasks.OnCompleteListener; import com.google.android.gms.tasks.Task; @@ -25,7 +25,7 @@ * SmartLock. */ @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP) -public class WelcomeBackPasswordHandler extends AuthViewModelBase { +public class WelcomeBackPasswordHandler extends SignInViewModelBase { private static final String TAG = "WBPasswordHandler"; private String mPendingPassword; @@ -88,7 +88,7 @@ public void onComplete(@NonNull Task task) { return; } - setResult(Resource.forSuccess(outputResponse.withResult(task.getResult()))); + handleSuccess(outputResponse, task.getResult()); } }) .addOnFailureListener( diff --git a/auth/src/main/java/com/firebase/ui/auth/viewmodel/idp/LinkingSocialProviderResponseHandler.java b/auth/src/main/java/com/firebase/ui/auth/viewmodel/idp/LinkingSocialProviderResponseHandler.java index 241f78839..96b3a6aef 100644 --- a/auth/src/main/java/com/firebase/ui/auth/viewmodel/idp/LinkingSocialProviderResponseHandler.java +++ b/auth/src/main/java/com/firebase/ui/auth/viewmodel/idp/LinkingSocialProviderResponseHandler.java @@ -9,7 +9,7 @@ import com.firebase.ui.auth.IdpResponse; import com.firebase.ui.auth.data.model.Resource; import com.firebase.ui.auth.util.data.ProviderUtils; -import com.firebase.ui.auth.viewmodel.AuthViewModelBase; +import com.firebase.ui.auth.viewmodel.SignInViewModelBase; import com.google.android.gms.tasks.Continuation; import com.google.android.gms.tasks.OnCompleteListener; import com.google.android.gms.tasks.Task; @@ -19,7 +19,7 @@ import com.google.firebase.auth.FirebaseUser; @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP) -public class LinkingSocialProviderResponseHandler extends AuthViewModelBase { +public class LinkingSocialProviderResponseHandler extends SignInViewModelBase { private AuthCredential mRequestedSignInCredential; public LinkingSocialProviderResponseHandler(Application application) { @@ -73,8 +73,7 @@ public AuthResult then(@NonNull Task task) { @Override public void onComplete(@NonNull Task task) { if (task.isSuccessful()) { - setResult(Resource.forSuccess( - response.withResult(task.getResult()))); + handleSuccess(response, task.getResult()); } else { setResult(Resource.forFailure(task.getException())); } @@ -87,7 +86,7 @@ public void onComplete(@NonNull Task task) { public void onComplete(@NonNull Task task) { // I'm not sure why we ignore failures here, but this mirrors previous // behavior. - setResult(Resource.forSuccess(response.withResult(task.getResult()))); + handleSuccess(response, task.getResult()); } }); } diff --git a/auth/src/main/java/com/firebase/ui/auth/viewmodel/idp/SocialProviderResponseHandler.java b/auth/src/main/java/com/firebase/ui/auth/viewmodel/idp/SocialProviderResponseHandler.java index ca874f6bb..42c38b7ff 100644 --- a/auth/src/main/java/com/firebase/ui/auth/viewmodel/idp/SocialProviderResponseHandler.java +++ b/auth/src/main/java/com/firebase/ui/auth/viewmodel/idp/SocialProviderResponseHandler.java @@ -18,8 +18,8 @@ import com.firebase.ui.auth.ui.email.WelcomeBackPasswordPrompt; import com.firebase.ui.auth.ui.idp.WelcomeBackIdpPrompt; import com.firebase.ui.auth.util.data.ProviderUtils; -import com.firebase.ui.auth.viewmodel.AuthViewModelBase; import com.firebase.ui.auth.viewmodel.RequestCodes; +import com.firebase.ui.auth.viewmodel.SignInViewModelBase; import com.google.android.gms.tasks.OnFailureListener; import com.google.android.gms.tasks.OnSuccessListener; import com.google.firebase.auth.AuthResult; @@ -27,7 +27,7 @@ import com.google.firebase.auth.FirebaseAuthUserCollisionException; @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP) -public class SocialProviderResponseHandler extends AuthViewModelBase { +public class SocialProviderResponseHandler extends SignInViewModelBase { public SocialProviderResponseHandler(Application application) { super(application); } @@ -48,7 +48,7 @@ public void startSignIn(@NonNull final IdpResponse response) { .addOnSuccessListener(new OnSuccessListener() { @Override public void onSuccess(AuthResult result) { - setResult(Resource.forSuccess(response.withResult(result))); + handleSuccess(response, result); } }) .addOnFailureListener(new OnFailureListener() { diff --git a/auth/src/main/java/com/firebase/ui/auth/viewmodel/phone/PhoneProviderResponseHandler.java b/auth/src/main/java/com/firebase/ui/auth/viewmodel/phone/PhoneProviderResponseHandler.java index 2398c1587..cf7a702ff 100644 --- a/auth/src/main/java/com/firebase/ui/auth/viewmodel/phone/PhoneProviderResponseHandler.java +++ b/auth/src/main/java/com/firebase/ui/auth/viewmodel/phone/PhoneProviderResponseHandler.java @@ -6,7 +6,7 @@ import com.firebase.ui.auth.IdpResponse; import com.firebase.ui.auth.data.model.Resource; -import com.firebase.ui.auth.viewmodel.AuthViewModelBase; +import com.firebase.ui.auth.viewmodel.SignInViewModelBase; import com.google.android.gms.tasks.OnCompleteListener; import com.google.android.gms.tasks.Task; import com.google.firebase.auth.AuthResult; @@ -14,7 +14,7 @@ import com.google.firebase.auth.PhoneAuthProvider; @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP) -public class PhoneProviderResponseHandler extends AuthViewModelBase { +public class PhoneProviderResponseHandler extends SignInViewModelBase { public PhoneProviderResponseHandler(Application application) { super(application); } @@ -36,7 +36,7 @@ public void startSignIn(@NonNull PhoneAuthCredential credential, @Override public void onComplete(@NonNull Task task) { if (task.isSuccessful()) { - setResult(Resource.forSuccess(response.withResult(task.getResult()))); + handleSuccess(response, task.getResult()); } else { setResult(Resource.forFailure(task.getException())); }