Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.example.mvvmlivedatarxjava.repository;
- import androidx.lifecycle.MutableLiveData;
- import com.example.mvvmlivedatarxjava.model.ResponseNews;
- import com.example.mvvmlivedatarxjava.model.Status;
- import com.example.mvvmlivedatarxjava.network.ApiFactory;
- import com.example.mvvmlivedatarxjava.network.ApiServices;
- import io.reactivex.android.schedulers.AndroidSchedulers;
- import io.reactivex.disposables.CompositeDisposable;
- import io.reactivex.disposables.Disposable;
- import io.reactivex.functions.Consumer;
- import io.reactivex.schedulers.Schedulers;
- public class MainRepository {
- private static MainRepository mainRepository;
- private ApiServices apiServices;
- private CompositeDisposable compositeDisposable = new CompositeDisposable();
- MutableLiveData<Status> status = new MutableLiveData<>();
- MutableLiveData<Boolean> isLoading = new MutableLiveData<>();
- MutableLiveData<Boolean> isError = new MutableLiveData<>();
- public static MainRepository getInstance(){
- if (mainRepository == null){
- mainRepository = new MainRepository();
- }
- return mainRepository;
- }
- public MainRepository(){
- apiServices = ApiFactory.getRetrofit().create(ApiServices.class);
- }
- public MutableLiveData<ResponseNews> getData(String sources, String apiKey){
- MutableLiveData<ResponseNews> liveData = new MutableLiveData<>();
- isLoading.setValue(true);
- Disposable disposable = apiServices.getData(sources, apiKey)
- .subscribeOn(Schedulers.io())
- .observeOn(AndroidSchedulers.mainThread())
- .subscribe(new Consumer<ResponseNews>() {
- @Override
- public void accept(ResponseNews responseNews) throws Exception {
- liveData.setValue(responseNews);
- isLoading.setValue(false);
- }
- }, new Consumer<Throwable>() {
- @Override
- public void accept(Throwable throwable) throws Exception {
- getError();
- isLoading.setValue(false);
- isError.setValue(true);
- }
- });
- compositeDisposable.add(disposable);
- return liveData;
- }
- public MutableLiveData<Status> getStatus(){
- status.setValue(Status.SUCESS);
- return status;
- }
- public MutableLiveData<Boolean> getIsLoading(){
- return isLoading;
- }
- public MutableLiveData<Boolean> getError(){
- return getError();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement