package apps.makarov.com.whereismycurrency.presenters; import android.util.Log; import java.util.List; import apps.makarov.com.whereismycurrency.R; import apps.makarov.com.whereismycurrency.models.ResultOperation; import apps.makarov.com.whereismycurrency.net.WimcService; import apps.makarov.com.whereismycurrency.view.iviews.ListOperationView; import rx.Observable; import rx.Observer; import rx.android.schedulers.AndroidSchedulers; import rx.schedulers.Schedulers; /** * Created by makarov on 03/07/15. */ public class ListOperationPresenterImpl implements ListOperationPresenter { private static final String TAG = ListOperationPresenterImpl.class.getSimpleName(); private ListOperationView mListOperationView; private WimcService mWimcService; public ListOperationPresenterImpl(ListOperationView listOperationView, WimcService wimcService) { this.mListOperationView = listOperationView; this.mWimcService = wimcService; } @Override public void onResume() { onRefresh(); } @Override public void onPause() { } @Override public void onRefresh() { getResultObservable().subscribe(new Observer<List<ResultOperation>>() { @Override public void onCompleted() { } @Override public void onError(Throwable e) { Log.e(TAG, "onError", e); mListOperationView.hideProgress(); mListOperationView.showErrorView(mListOperationView.getContext().getString(R.string.error_not_data)); } @Override public void onNext(List<ResultOperation> rates) { fillAdapter(rates); mListOperationView.hideProgress(); } }); } private Observable<List<ResultOperation>> getResultObservable() { return mWimcService .getResultOperations() .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .cache(); } private Observable<List<ResultOperation>> getUpdateObservable() { return mWimcService .getUpdateResultOperations() .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .cache(); } @Override public void onUpdateResults() { getUpdateObservable().subscribe(new Observer<List<ResultOperation>>() { @Override public void onCompleted() { } @Override public void onError(Throwable e) { } @Override public void onNext(List<ResultOperation> rates) { fillAdapter(rates); } }); } private void fillAdapter(List<ResultOperation> rates){ if(rates.size() == 0){ mListOperationView.setVisabileSplash(true); return; } mListOperationView.setVisabileSplash(false); mListOperationView.showHistoryList(rates); } }