2424
2525import com .firebase .ui .auth .ui .ExtraConstants ;
2626import com .google .firebase .auth .FacebookAuthProvider ;
27- import com .google .firebase .auth .GithubAuthProvider ;
2827import com .google .firebase .auth .GoogleAuthProvider ;
2928import com .google .firebase .auth .TwitterAuthProvider ;
3029
3130/**
3231 * A container that encapsulates the result of authenticating with an Identity Provider.
3332 */
3433public class IdpResponse implements Parcelable {
35- private final String mProviderId ;
36- private final String mEmail ;
37- private final String mPhoneNumber ;
34+ private final User mUser ;
3835 private final String mToken ;
3936 private final String mSecret ;
4037 private final int mErrorCode ;
4138
4239 private IdpResponse (int errorCode ) {
43- this (null , null , null , null , null , errorCode );
40+ this (null , null , null , errorCode );
4441 }
4542
4643 private IdpResponse (
47- String providerId ,
48- String email ,
49- String phoneNumber ,
44+ User user ,
5045 String token ,
5146 String secret ,
5247 int errorCode ) {
53- mProviderId = providerId ;
54- mEmail = email ;
55- mPhoneNumber = phoneNumber ;
48+ mUser = user ;
5649 mToken = token ;
5750 mSecret = secret ;
5851 mErrorCode = errorCode ;
@@ -89,23 +82,23 @@ public Intent toIntent() {
8982 @ NonNull
9083 @ AuthUI .SupportedProvider
9184 public String getProviderType () {
92- return mProviderId ;
85+ return mUser . getProviderId () ;
9386 }
9487
9588 /**
9689 * Get the email used to sign in.
9790 */
9891 @ Nullable
9992 public String getEmail () {
100- return mEmail ;
93+ return mUser . getEmail () ;
10194 }
10295
10396 /**
10497 * Get the phone number used to sign in.
10598 */
10699 @ Nullable
107100 public String getPhoneNumber () {
108- return mPhoneNumber ;
101+ return mUser . getPhoneNumber () ;
109102 }
110103
111104 /**
@@ -138,9 +131,7 @@ public int describeContents() {
138131
139132 @ Override
140133 public void writeToParcel (Parcel dest , int flags ) {
141- dest .writeString (mProviderId );
142- dest .writeString (mEmail );
143- dest .writeString (mPhoneNumber );
134+ dest .writeParcelable (mUser , flags );
144135 dest .writeString (mToken );
145136 dest .writeString (mSecret );
146137 dest .writeInt (mErrorCode );
@@ -150,9 +141,7 @@ public void writeToParcel(Parcel dest, int flags) {
150141 @ Override
151142 public IdpResponse createFromParcel (Parcel in ) {
152143 return new IdpResponse (
153- in .readString (),
154- in .readString (),
155- in .readString (),
144+ in .<User >readParcelable (User .class .getClassLoader ()),
156145 in .readString (),
157146 in .readString (),
158147 in .readInt ()
@@ -167,21 +156,12 @@ public IdpResponse[] newArray(int size) {
167156
168157 @ RestrictTo (RestrictTo .Scope .LIBRARY_GROUP )
169158 public static class Builder {
170- private String mProviderId ;
171- private String mEmail ;
172- private String mPhoneNumber ;
159+ private User mUser ;
173160 private String mToken ;
174161 private String mSecret ;
175162
176- public Builder (@ AuthUI .SupportedProvider @ NonNull String providerId ,
177- @ Nullable String email ) {
178- mProviderId = providerId ;
179- mEmail = email ;
180- }
181-
182- public Builder setPhoneNumber (String phoneNumber ) {
183- mPhoneNumber = phoneNumber ;
184- return this ;
163+ public Builder (@ NonNull User user ) {
164+ mUser = user ;
185165 }
186166
187167 public Builder setToken (String token ) {
@@ -195,22 +175,21 @@ public Builder setSecret(String secret) {
195175 }
196176
197177 public IdpResponse build () {
198- if (( mProviderId . equalsIgnoreCase ( GoogleAuthProvider . PROVIDER_ID )
199- || mProviderId .equalsIgnoreCase (FacebookAuthProvider .PROVIDER_ID )
200- || mProviderId .equalsIgnoreCase (TwitterAuthProvider .PROVIDER_ID )
201- || mProviderId .equalsIgnoreCase (GithubAuthProvider .PROVIDER_ID ))
178+ String providerId = mUser . getProviderId ();
179+ if (( providerId .equalsIgnoreCase (GoogleAuthProvider .PROVIDER_ID )
180+ || providerId .equalsIgnoreCase (FacebookAuthProvider .PROVIDER_ID )
181+ || providerId .equalsIgnoreCase (TwitterAuthProvider .PROVIDER_ID ))
202182 && TextUtils .isEmpty (mToken )) {
203183 throw new IllegalStateException (
204184 "Token cannot be null when using a non-email provider." );
205185 }
206- if (mProviderId .equalsIgnoreCase (TwitterAuthProvider .PROVIDER_ID )
186+ if (providerId .equalsIgnoreCase (TwitterAuthProvider .PROVIDER_ID )
207187 && TextUtils .isEmpty (mSecret )) {
208188 throw new IllegalStateException (
209189 "Secret cannot be null when using the Twitter provider." );
210190 }
211191
212- return new IdpResponse (
213- mProviderId , mEmail , mPhoneNumber , mToken , mSecret , ResultCodes .OK );
192+ return new IdpResponse (mUser , mToken , mSecret , ResultCodes .OK );
214193 }
215194 }
216195}
0 commit comments