package com.looklook.xinghongfei.looklook.presenter.implPresenter; import android.content.Context; import com.google.gson.Gson; import com.looklook.xinghongfei.looklook.api.ApiManager; import com.looklook.xinghongfei.looklook.bean.zhihu.ZhihuDaily; import com.looklook.xinghongfei.looklook.bean.zhihu.ZhihuDailyItem; import com.looklook.xinghongfei.looklook.config.Config; import com.looklook.xinghongfei.looklook.presenter.IZhihuPresenter; import com.looklook.xinghongfei.looklook.presenter.implView.IZhihuFragment; import com.looklook.xinghongfei.looklook.util.CacheUtil; import rx.Observer; import rx.Subscription; import rx.android.schedulers.AndroidSchedulers; import rx.functions.Func1; import rx.schedulers.Schedulers; /** * Created by 蔡小木 on 2016/4/23 0023. */ public class ZhihuPresenterImpl extends BasePresenterImpl implements IZhihuPresenter { private IZhihuFragment mZhihuFragment; private CacheUtil mCacheUtil; private Gson gson = new Gson(); public ZhihuPresenterImpl(Context context,IZhihuFragment zhihuFragment) { mZhihuFragment = zhihuFragment; mCacheUtil = CacheUtil.get(context); } @Override public void getLastZhihuNews() { mZhihuFragment.showProgressDialog(); Subscription subscription = ApiManager.getInstence().getZhihuApiService().getLastDaily() .map(new Func1<ZhihuDaily, ZhihuDaily>() { @Override public ZhihuDaily call(ZhihuDaily zhihuDaily) { String date = zhihuDaily.getDate(); for (ZhihuDailyItem zhihuDailyItem : zhihuDaily.getStories()) { zhihuDailyItem.setDate(date); } return zhihuDaily; } }) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Observer<ZhihuDaily>() { @Override public void onCompleted() { } @Override public void onError(Throwable e) { mZhihuFragment.hidProgressDialog(); mZhihuFragment.showError(e.getMessage()); } @Override public void onNext(ZhihuDaily zhihuDaily) { mZhihuFragment.hidProgressDialog(); mCacheUtil.put(Config.ZHIHU, gson.toJson(zhihuDaily)); mZhihuFragment.updateList(zhihuDaily); } }); addSubscription(subscription); } @Override public void getTheDaily(String date) { Subscription subscription = com.looklook.xinghongfei.looklook.api.ApiManager.getInstence().getZhihuApiService().getTheDaily(date) .map(new Func1<ZhihuDaily, ZhihuDaily>() { @Override public ZhihuDaily call(ZhihuDaily zhihuDaily) { String date = zhihuDaily.getDate(); for (ZhihuDailyItem zhihuDailyItem : zhihuDaily.getStories()) { zhihuDailyItem.setDate(date); } return zhihuDaily; } }) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Observer<ZhihuDaily>() { @Override public void onCompleted() { } @Override public void onError(Throwable e) { e.printStackTrace(); mZhihuFragment.hidProgressDialog(); mZhihuFragment.showError(e.getMessage()); } @Override public void onNext(ZhihuDaily zhihuDaily) { mZhihuFragment.hidProgressDialog(); mZhihuFragment.updateList(zhihuDaily); } }); addSubscription(subscription); } @Override public void getLastFromCache() { if (mCacheUtil.getAsJSONObject(Config.ZHIHU) != null) { ZhihuDaily zhihuDaily = gson.fromJson(mCacheUtil.getAsJSONObject(Config.ZHIHU).toString(), ZhihuDaily.class); mZhihuFragment.updateList(zhihuDaily); } } }