package com.pandaq.pandaeye.modules.news.newsdetail; import com.pandaq.pandaeye.api.ApiManager; import com.pandaq.pandaeye.BasePresenter; import com.pandaq.pandaeye.utils.JsonUtils; import java.io.IOException; import io.reactivex.Observer; import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.disposables.Disposable; import io.reactivex.functions.Function; import io.reactivex.schedulers.Schedulers; import okhttp3.ResponseBody; /** * Created by PandaQ on 2016/10/10. * email : 767807368@qq.com */ public class NewsDetailPresenter extends BasePresenter implements NewsDetailContract.Presenter { private NewsDetailContract.View mActivity; public NewsDetailPresenter(NewsDetailContract.View activity) { mActivity = activity; } /** * 加载新闻详情 * * @param id */ public void loadNewsContent(final String id) { mActivity.showProgressBar(); ApiManager.getInstence() .getTopNewsServie() .getNewsContent(id) .map(new Function<ResponseBody, NewsContent>() { @Override public NewsContent apply(ResponseBody responseBody) { NewsContent topNews = null; try { topNews = JsonUtils.readJsonNewsContent(responseBody.string(), id); } catch (IOException e) { e.printStackTrace(); } return topNews; } }) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Observer<NewsContent>() { @Override public void onComplete() { mActivity.hideProgressBar(); } @Override public void onError(Throwable e) { mActivity.hideProgressBar(); mActivity.loadFail(e.getMessage()); } @Override public void onSubscribe(Disposable d) { addDisposable(d); } @Override public void onNext(NewsContent response) { mActivity.hideProgressBar(); mActivity.loadSuccess(response); } }); } }