package name.caiyao.microreader.presenter.impl;
import android.content.Context;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import java.util.ArrayList;
import java.util.Iterator;
import name.caiyao.microreader.api.itHome.ItHomeRequest;
import name.caiyao.microreader.bean.itHome.ItHomeItem;
import name.caiyao.microreader.bean.itHome.ItHomeResponse;
import name.caiyao.microreader.config.Config;
import name.caiyao.microreader.presenter.IItHomePresenter;
import name.caiyao.microreader.ui.iView.IItHomeFragment;
import name.caiyao.microreader.utils.CacheUtil;
import name.caiyao.microreader.utils.ItHomeUtil;
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 ItHomePresenterImpl extends BasePresenterImpl implements IItHomePresenter {
private Gson gson = new Gson();
private IItHomeFragment mItHomeFragment;
private CacheUtil mCacheUtil;
public ItHomePresenterImpl(IItHomeFragment iItHomeFragment, Context context) {
if (iItHomeFragment == null)
throw new IllegalArgumentException("iItHomeFragment must not be null");
this.mItHomeFragment = iItHomeFragment;
mCacheUtil = CacheUtil.get(context);
}
@Override
public void getNewItHomeNews() {
mItHomeFragment.showProgressDialog();
Subscription subscription = ItHomeRequest.getItHomeApi().getItHomeNews()
.subscribeOn(Schedulers.io())
.map(new Func1<ItHomeResponse, ArrayList<ItHomeItem>>() {
@Override
public ArrayList<ItHomeItem> call(ItHomeResponse itHomeResponse) {
//过滤广告新闻
ArrayList<ItHomeItem> itHomeItems1 = itHomeResponse.getChannel().getItems();
Iterator<ItHomeItem> iter = itHomeItems1.iterator();
while (iter.hasNext()) {
ItHomeItem item = iter.next();
if (item.getUrl().contains("digi"))
iter.remove();
}
return itHomeItems1;
}
})
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<ArrayList<ItHomeItem>>() {
@Override
public void onCompleted() {
}
@Override
public void onError(Throwable e) {
e.printStackTrace();
mItHomeFragment.hidProgressDialog();
mItHomeFragment.showError(e.getMessage());
}
@Override
public void onNext(ArrayList<ItHomeItem> it) {
mItHomeFragment.hidProgressDialog();
mItHomeFragment.updateList(it);
mCacheUtil.put(Config.IT, gson.toJson(it));
}
});
addSubscription(subscription);
}
@Override
public void getMoreItHomeNews(String lastNewsId) {
Subscription subscription = ItHomeRequest.getItHomeApi().getMoreItHomeNews(ItHomeUtil.getMinNewsId(lastNewsId))
.map(new Func1<ItHomeResponse, ArrayList<ItHomeItem>>() {
@Override
public ArrayList<ItHomeItem> call(ItHomeResponse itHomeResponse) {
//过滤广告新闻
ArrayList<ItHomeItem> itHomeItems1 = itHomeResponse.getChannel().getItems();
Iterator<ItHomeItem> iter = itHomeItems1.iterator();
while (iter.hasNext()) {
ItHomeItem item = iter.next();
if (item.getUrl().contains("digi"))
iter.remove();
}
return itHomeItems1;
}
}).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<ArrayList<ItHomeItem>>() {
@Override
public void onCompleted() {
}
@Override
public void onError(Throwable e) {
mItHomeFragment.hidProgressDialog();
mItHomeFragment.showError(e.getMessage());
}
@Override
public void onNext(ArrayList<ItHomeItem> it) {
mItHomeFragment.hidProgressDialog();
mItHomeFragment.updateList(it);
}
});
addSubscription(subscription);
}
@Override
public void getNewsFromCache() {
if (mCacheUtil.getAsJSONArray(Config.IT) != null && mCacheUtil.getAsJSONArray(Config.IT).length() != 0) {
ArrayList<ItHomeItem> it = gson.fromJson(mCacheUtil.getAsJSONArray(Config.IT).toString(), new TypeToken<ArrayList<ItHomeItem>>() {
}.getType());
mItHomeFragment.updateList(it);
}
}
}