package com.laotan.easyreader.presenter.impl;
import android.support.annotation.NonNull;
import android.text.TextUtils;
import com.blankj.utilcode.utils.SPUtils;
import com.laotan.easyreader.bean.zhihu.DailyListBean;
import com.laotan.easyreader.bean.zhihu.HomeListBean;
import com.laotan.easyreader.bean.zhihu.HotListBean;
import com.laotan.easyreader.bean.zhihu.SectionListBean;
import com.laotan.easyreader.bean.zhihu.ThemeListBean;
import com.laotan.easyreader.http.service.ZhiHuService;
import com.laotan.easyreader.http.utils.Callback;
import com.laotan.easyreader.presenter.BasePresenter;
import com.laotan.easyreader.presenter.ZhiHuPresenter;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import javax.inject.Inject;
/**
* Created by quantan.liu on 2017/3/22.
* 首页数据根据多个接口的返回,自己进行拼接。
* 模板public class XXXPresenterImpl extends BasePresenter<XXXPresenter.View> implements XXXPresenter.Presenter
* 除了XXX以外的都是一样的,方法按照实现来。
* 构造方法要注意按照用到的RetrofitXXXUtils来完成。
*/
public class ZhiHuPresenterImpl extends BasePresenter<ZhiHuPresenter.View> implements ZhiHuPresenter.Presenter {
private ZhiHuService mZhiHuService;
@Inject
public ZhiHuPresenterImpl(ZhiHuService mZhiHuService) {
this.mZhiHuService = mZhiHuService;
}
private List<HomeListBean> homeList = new ArrayList<>();
public List<HomeListBean> getHomeList() {
List<HomeListBean> newHomeList = new ArrayList<>();
int daily = 0;
int hot = 0;
int theme = 0;
int section = 0;
SPUtils spUtils = new SPUtils("home_list");
String homeListString = spUtils.getString("home_list");
String[] split = homeListString.split("&&");
for (int i = 0; i < split.length; i++) {
if ("知乎日报".equals(split[i])) {
daily = i + 1;
continue;
}
if ("知乎热门".equals(split[i])) {
hot = i + 1;
continue;
}
if ("知乎主题".equals(split[i])) {
theme = i + 1;
continue;
}
if ("知乎专栏".equals(split[i])) {
section = i + 1;
continue;
}
}
for (int y = 1; y <= 4; y++) {
if (daily == y) {
checkAddToNewHomeList("知乎日报", 1, newHomeList);
continue;
}
if (hot == y) {
checkAddToNewHomeList("知乎热门", 2, newHomeList);
continue;
}
if (theme == y) {
checkAddToNewHomeList("知乎主题", 3, newHomeList);
continue;
}
if (section == y) {
checkAddToNewHomeList("知乎专栏", 4, newHomeList);
continue;
}
}
return newHomeList;
}
private void checkAddToNewHomeList(String title, int type, List<HomeListBean> newHomeList) {
for (int i = 1; i <= homeList.size(); i++) {
if (!TextUtils.isEmpty(title) &&
title.equals(homeList.get(i - 1).getTitle())) {
newHomeList.add(homeList.get(i - 1));
}
if (homeList.get(i - 1).getType() == type) {
newHomeList.add(homeList.get(i - 1));
}
}
}
private List<DailyListBean.TopStoriesBean> topStoriesList = new ArrayList<>();
public List<DailyListBean.TopStoriesBean> getTopStoriesList() {
return topStoriesList;
}
public void fetchData() {
fetchDailyData();
}
public void fetchDailyData() {
invoke(mZhiHuService.fetchDailyList(), new Callback<DailyListBean>() {
@Override
public void onResponse(DailyListBean data) {
topStoriesList = data.getTop_stories();
List<DailyListBean.StoriesBean> storiesBeanList = data.getStories();
settitle("知乎日报");
for (int i = 0; i < 3; i++) {
HomeListBean homeListBean = settype(1);
homeListBean.setDailyList(storiesBeanList.get(i));
homeList.add(homeListBean);
}
fetchHotList();
}
});
}
public void fetchHotList() {
invoke(mZhiHuService.fetchHotList(), new Callback<HotListBean>() {
@Override
public void onResponse(HotListBean data) {
List<HotListBean.RecentBean> recent = data.getRecent();
settitle("知乎热门");
List<HotListBean.RecentBean> hotList = new ArrayList<>();
List<HotListBean.RecentBean> hotList2 = new ArrayList<>();
for (int i = 0; i < 6; i++) {
if (i < 3) {
hotList.add(recent.get(i));
} else {
hotList2.add(recent.get(i));
}
}
HomeListBean homeListBean = settype(2);
homeListBean.setHotList(hotList);
homeList.add(homeListBean);
HomeListBean homeListBean2 = settype(2);
homeListBean2.setHotList(hotList2);
homeList.add(homeListBean2);
fetchThemeList();
}
});
}
public void fetchThemeList() {
invoke(mZhiHuService.fetchThemeList(), new Callback<ThemeListBean>() {
@Override
public void onResponse(ThemeListBean data) {
List<ThemeListBean.OthersBean> others = data.getOthers();
settitle("知乎主题");
List<ThemeListBean.OthersBean> themeList = new ArrayList<>();
List<ThemeListBean.OthersBean> themeList2 = new ArrayList<>();
int random = new Random().nextInt(4);
for (int i = random; i < random + 4; i++) {
if (i < random + 2) {
themeList.add(others.get(i));
} else {
themeList2.add(others.get(i));
}
}
HomeListBean homeListBean = settype(3);
homeListBean.setThemeList(themeList);
homeList.add(homeListBean);
HomeListBean homeListBean2 = settype(3);
homeListBean2.setThemeList(themeList2);
homeList.add(homeListBean2);
fetchSectionList();
}
});
}
public void fetchSectionList() {
invoke(mZhiHuService.fetchSectionList(), new Callback<SectionListBean>() {
@Override
public void onResponse(SectionListBean data) {
List<SectionListBean.DataBean> data1 = data.getData();
settitle("知乎专栏");
List<SectionListBean.DataBean> sectionList = new ArrayList<>();
int random = new Random().nextInt(4);
for (int i = random; i < random + 3; i++) {
sectionList.add(data1.get(i));
}
HomeListBean homeListBean = settype(4);
homeListBean.setSectionList(sectionList);
homeList.add(homeListBean);
mView.refreshView(getHomeList());
}
});
}
private void settitle(String title) {
HomeListBean homeListBean = settype(0);
homeListBean.setTitle(title);
homeList.add(homeListBean);
}
@NonNull
private HomeListBean settype(int type) {
HomeListBean homeListBean = new HomeListBean();
homeListBean.setType(type);
return homeListBean;
}
}