File tree Expand file tree Collapse file tree 2 files changed +25
-12
lines changed
firebase-auth-rest/core/src/main/java/com/anotherdev/firebase/auth Expand file tree Collapse file tree 2 files changed +25
-12
lines changed Original file line number Diff line number Diff line change @@ -220,14 +220,7 @@ public Single<SignInResponse> reauthenticate(@NonNull AuthCredential credential)
220220 @ NonNull
221221 @ Override
222222 public Completable reload () {
223- return Completable .fromAction (() -> {
224- if (idToken != null ) {
225- getAuthInternal ().getAccountInfo (idToken );
226- } else {
227- String error = String .format ("idToken is null. Cannot reload user: %s" , getUid ());
228- throw new IllegalStateException (error );
229- }
230- });
223+ return Completable .fromAction (() -> getAuthInternal ().getAccountInfo ());
231224 }
232225
233226 @ NonNull
@@ -236,8 +229,8 @@ public Completable updateProfile(@NonNull UserProfileChangeRequest request) {
236229 return Single .just (ImmutableUserProfileChangeRequest .copyOf (request ))
237230 .map (req -> req .withIdToken (idToken ))
238231 .flatMap (req -> RestAuthApi .auth ().updateProfile (req ))
239- .doOnSuccess (response -> getAuthInternal ().getAccessToken ( true ))
240- .flatMapCompletable (ignored -> Completable . complete ());
232+ .flatMap (response -> getAuthInternal ().exchangeToken ( ))
233+ .flatMapCompletable (ignored -> reload ());
241234 }
242235
243236 @ NonNull
@@ -249,8 +242,8 @@ public Completable updateEmail(@NonNull String newEmail) {
249242 .email (email )
250243 .build ())
251244 .flatMap (req -> RestAuthApi .auth ().updateEmail (req ))
252- .doOnSuccess (response -> getAuthInternal ().saveCurrentUser (response ))
253- .flatMapCompletable (ignored -> Completable . complete ());
245+ .map (response -> getAuthInternal ().saveCurrentUser (response ))
246+ .flatMapCompletable (response -> reload ());
254247 }
255248
256249 @ NonNull
Original file line number Diff line number Diff line change 2121import com .anotherdev .firebase .auth .provider .Provider ;
2222import com .anotherdev .firebase .auth .rest .api .RestAuthApi ;
2323import com .anotherdev .firebase .auth .rest .api .model .ExchangeTokenRequest ;
24+ import com .anotherdev .firebase .auth .rest .api .model .ExchangeTokenResponse ;
2425import com .anotherdev .firebase .auth .rest .api .model .GetAccountInfoRequest ;
2526import com .anotherdev .firebase .auth .rest .api .model .GetAccountInfoResponse ;
2627import com .anotherdev .firebase .auth .rest .api .model .ImmutableSignInWithEmailPasswordRequest ;
@@ -296,6 +297,21 @@ public Task<GetTokenResult> getAccessToken(boolean forceRefresh) {
296297 return source .getTask ();
297298 }
298299
300+ public Single <ExchangeTokenResponse > exchangeToken () {
301+ return exchangeToken (userStore .get ());
302+ }
303+
304+ public Single <ExchangeTokenResponse > exchangeToken (@ NonNull FirebaseUserImpl user ) {
305+ return Single .fromCallable (user ::getRefreshToken )
306+ .map (token -> ExchangeTokenRequest .builder ().refreshToken (token ).build ())
307+ .flatMap (request -> RestAuthApi .token ().exchangeToken (request ))
308+ .doOnError (e -> Timber .tag ("http" ).e (e ))
309+ .map (response -> {
310+ saveCurrentUser (response .getIdToken (), response .getRefreshToken ());
311+ return response ;
312+ });
313+ }
314+
299315 @ Nullable
300316 @ Override
301317 public String getUid () {
@@ -334,6 +350,10 @@ private SignInResponse getAccountInfo(SignInResponse signInResponse) {
334350 return signInResponse ;
335351 }
336352
353+ public void getAccountInfo () {
354+ getAccountInfo (userStore .get ().getIdToken ());
355+ }
356+
337357 @ WorkerThread
338358 public void getAccountInfo (@ NonNull String idToken ) {
339359 GetAccountInfoRequest request = GetAccountInfoRequest .builder ()
You can’t perform that action at this time.
0 commit comments