Skip to content

Commit 90cf5c0

Browse files
committed
fix some profile data doesn't update when send modification commands
1 parent 0fe943d commit 90cf5c0

File tree

2 files changed

+25
-12
lines changed

2 files changed

+25
-12
lines changed

firebase-auth-rest/core/src/main/java/com/anotherdev/firebase/auth/data/model/FirebaseUserImpl.java

Lines changed: 5 additions & 12 deletions
Original file line numberDiff line numberDiff 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

firebase-auth-rest/core/src/main/java/com/anotherdev/firebase/auth/rest/RestAuthProvider.java

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import com.anotherdev.firebase.auth.provider.Provider;
2222
import com.anotherdev.firebase.auth.rest.api.RestAuthApi;
2323
import com.anotherdev.firebase.auth.rest.api.model.ExchangeTokenRequest;
24+
import com.anotherdev.firebase.auth.rest.api.model.ExchangeTokenResponse;
2425
import com.anotherdev.firebase.auth.rest.api.model.GetAccountInfoRequest;
2526
import com.anotherdev.firebase.auth.rest.api.model.GetAccountInfoResponse;
2627
import 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()

0 commit comments

Comments
 (0)