Skip to content

Instantly share code, notes, and snippets.

@abbas-oveissi
Created May 25, 2018 08:46
Show Gist options
  • Save abbas-oveissi/941bd5f92b3775551bf6dec124ce657f to your computer and use it in GitHub Desktop.
Save abbas-oveissi/941bd5f92b3775551bf6dec124ce657f to your computer and use it in GitHub Desktop.
public class MovieDetailViewModel extends BaseViewModel {
LiveData<MovieDetailViewState> baz = new MutableLiveData();
MutableLiveData<Void> retryNetworkRequest = new MutableLiveData();
MovieInteractor movieInteractor;
@Inject
public MovieDetailViewModel(MovieInteractor movieInteractor) {
this.movieInteractor = movieInteractor;
}
LiveData<MovieDetailViewState> getViewState() {
baz = Transformations.switchMap(retryNetworkRequest,(v)->{
return LiveDataReactiveStreams.fromPublisher(movieInteractor.getMovieByID("1")
.map((it)->(MovieDetailViewState) new MovieDetailViewState.Data(it))
.onErrorReturnItem(new MovieDetailViewState.Error(""))
.startWith(new MovieDetailViewState.Loading()));
});
return baz;
}
void retryNetwork() {
retryNetworkRequest.setValue(null);
}
}
@Tenkei
Copy link

Tenkei commented May 25, 2018

public class MovieDetailViewModel extends BaseViewModel {

    LiveData<MovieDetailViewState> baz =  Transformations.switchMap(retryNetworkRequest,(v)->{
            return LiveDataReactiveStreams.fromPublisher(movieInteractor.getMovieByID("1")
                    .map((it)->(MovieDetailViewState) new MovieDetailViewState.Data(it))
                    .onErrorReturnItem(new MovieDetailViewState.Error(""))
                    .startWith(new MovieDetailViewState.Loading()));
        });

    MutableLiveData<Void> retryNetworkRequest = new MutableLiveData();

    MovieInteractor movieInteractor;

    @Inject
    public MovieDetailViewModel(MovieInteractor movieInteractor) {
        this.movieInteractor = movieInteractor;
    }

    LiveData<MovieDetailViewState> getViewState() {
        return baz;
    }

    void retryNetwork() {
        retryNetworkRequest.setValue(null);
    }
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment