package name.caiyao.microreader.presenter.impl;
import android.content.Context;
import com.google.gson.Gson;
import name.caiyao.microreader.api.weixin.TxRequest;
import name.caiyao.microreader.bean.weixin.TxWeixinResponse;
import name.caiyao.microreader.config.Config;
import name.caiyao.microreader.presenter.IWeixinPresenter;
import name.caiyao.microreader.ui.iView.IWeixinFragment;
import name.caiyao.microreader.utils.CacheUtil;
import rx.Subscriber;
import rx.Subscription;
import rx.android.schedulers.AndroidSchedulers;
import rx.schedulers.Schedulers;
/**
* Created by 蔡小木 on 2016/4/22 0022.
*/
public class WeiXinPresenterImpl extends BasePresenterImpl implements IWeixinPresenter {
private CacheUtil mCacheUtil;
private IWeixinFragment mWeixinFragment;
private Gson mGson = new Gson();
public WeiXinPresenterImpl(IWeixinFragment weixinFragment, Context context) {
if (weixinFragment==null)
throw new IllegalArgumentException("weixinFragment must not be null");
this.mWeixinFragment = weixinFragment;
mCacheUtil = CacheUtil.get(context);
}
@Override
public void getWeixinNews(final int page) {
mWeixinFragment.showProgressDialog();
Subscription subscription = TxRequest.getTxApi().getWeixin(page).subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Subscriber<TxWeixinResponse>() {
@Override
public void onCompleted() {
}
@Override
public void onError(Throwable e) {
mWeixinFragment.hidProgressDialog();
mWeixinFragment.showError(e.getMessage());
}
@Override
public void onNext(TxWeixinResponse txWeixinResponse) {
mWeixinFragment.hidProgressDialog();
if (txWeixinResponse.getCode() == 200) {
mWeixinFragment.updateList(txWeixinResponse.getNewslist());
mCacheUtil.put(Config.WEIXIN + page, mGson.toJson(txWeixinResponse));
} else {
mWeixinFragment.showError("服务器内部错误!");
}
}
});
addSubscription(subscription);
}
@Override
public void getWeixinNewsFromCache(int page) {
if (mCacheUtil.getAsJSONObject(Config.WEIXIN + page) != null) {
TxWeixinResponse txWeixinResponse = mGson.fromJson(mCacheUtil.getAsJSONObject(Config.WEIXIN + page).toString(), TxWeixinResponse.class);
mWeixinFragment.updateList(txWeixinResponse.getNewslist());
}
}
}