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);
}
}
}