bjjdroid
bjjdroid

Reputation: 183

RxJava Only want to call cache when api call is success

I am very new to RxJava and can't seem to find figure out the solution to this use case. I have been researching on this for 2 days now and no luck.

I have 2 Singles, remote and cache, to register a user in my app

I first call remote which saves the user data on a server, and returns a custom code to indicate successfully saved. I only want to call cache after I have checked the custom code from remote and gotten a success. If custom code comes as failure, I want to return that, and not go to the cache at all

Upvotes: 0

Views: 800

Answers (1)

Aston
Aston

Reputation: 26

The operator, which you're looking for, is flatMap. Example:

remoteApi.login().flatMap(new Function<String, SingleSource<String>>() {
  @Override public SingleSource<String> apply(String response) throws Exception {
    if (response.equals("success")) {
      //  do what you want to do with cache
      return cache.save(response);
    }
    return Single.just(response);
  }
}).subscribe(yourObserver);

Don't forget to use subscribeOn and observeOn...

Upvotes: 1

Related Questions