package com.wenming.weiswift.mvp.presenter.imp;
import android.content.Context;
import android.widget.PopupWindow;
import com.google.gson.Gson;
import com.wenming.weiswift.entity.Status;
import com.wenming.weiswift.entity.User;
import com.wenming.weiswift.entity.list.FavoriteList;
import com.wenming.weiswift.entity.list.StatusList;
import com.wenming.weiswift.mvp.model.FavoriteListModel;
import com.wenming.weiswift.mvp.model.FriendShipModel;
import com.wenming.weiswift.mvp.model.StatusListModel;
import com.wenming.weiswift.mvp.model.imp.FavoriteListModelImp;
import com.wenming.weiswift.mvp.model.imp.FriendShipModelImp;
import com.wenming.weiswift.mvp.model.imp.StatusListModelImp;
import com.wenming.weiswift.mvp.presenter.WeiBoArrowPresent;
import com.wenming.weiswift.ui.common.login.AccessTokenKeeper;
import com.wenming.weiswift.ui.common.login.Constants;
import com.wenming.weiswift.ui.login.fragment.home.weiboitem.WeiboAdapter;
import com.wenming.weiswift.utils.SDCardUtil;
/**
* Created by xiangflight on 2016/4/22.
*/
public class WeiBoArrowPresenterImp implements WeiBoArrowPresent {
private StatusListModel statusListModel;
private FriendShipModel friendShipModel;
private FavoriteListModel favoriteListModel;
private PopupWindow mPopupWindows;
private WeiboAdapter mAdapter;
private Context mContext;
public WeiBoArrowPresenterImp(PopupWindow popupWindow) {
statusListModel = new StatusListModelImp();
friendShipModel = new FriendShipModelImp();
favoriteListModel = new FavoriteListModelImp();
this.mPopupWindows = popupWindow;
}
public WeiBoArrowPresenterImp(PopupWindow popupWindow, WeiboAdapter adapter) {
statusListModel = new StatusListModelImp();
friendShipModel = new FriendShipModelImp();
favoriteListModel = new FavoriteListModelImp();
this.mPopupWindows = popupWindow;
this.mAdapter = adapter;
}
public WeiBoArrowPresenterImp(WeiboAdapter adapter) {
statusListModel = new StatusListModelImp();
friendShipModel = new FriendShipModelImp();
favoriteListModel = new FavoriteListModelImp();
this.mAdapter = adapter;
}
/**
* 删除一条微博
*
* @param id
* @param context
*/
public void weibo_destroy(long id, Context context, final int position, final String weiboGroup) {
mContext = context;
mPopupWindows.dismiss();
statusListModel.weibo_destroy(id, context, new StatusListModel.OnRequestListener() {
@Override
public void onSuccess() {
//内存删除
mAdapter.removeDataItem(position);
//显示动画效果
mAdapter.notifyItemRemoved(position);
//notifyItemRangeChanged:对于被删掉的位置及其后range大小范围内的view进行重新onBindViewHolder
mAdapter.notifyItemRangeChanged(position, mAdapter.getItemCount() - (1 + position));
//本地删除
updateLocalFile(weiboGroup, position);
}
@Override
public void onError(String error) {
}
});
}
public void updateLocalFile(String weiboGroup, int position) {
String response = null;
switch (weiboGroup) {
case Constants.DELETE_WEIBO_TYPE1:
response = SDCardUtil.get(mContext, SDCardUtil.getSDCardPath() + "/weiSwift/home", "全部微博" + AccessTokenKeeper.readAccessToken(mContext).getUid() + ".txt");
break;
case Constants.DELETE_WEIBO_TYPE2:
response = SDCardUtil.get(mContext, SDCardUtil.getSDCardPath() + "/weiSwift/profile", "我的全部微博" + AccessTokenKeeper.readAccessToken(mContext).getUid() + ".txt");
break;
case Constants.DELETE_WEIBO_TYPE3:
response = SDCardUtil.get(mContext, SDCardUtil.getSDCardPath() + "/weiSwift/profile", "我的原创微博" + AccessTokenKeeper.readAccessToken(mContext).getUid() + ".txt");
break;
case Constants.DELETE_WEIBO_TYPE4:
response = SDCardUtil.get(mContext, SDCardUtil.getSDCardPath() + "/weiSwift/profile", "我的图片微博" + AccessTokenKeeper.readAccessToken(mContext).getUid() + ".txt");
break;
case Constants.DELETE_WEIBO_TYPE5:
response = SDCardUtil.get(mContext, SDCardUtil.getSDCardPath() + "/weiSwift/home", "好友圈" + AccessTokenKeeper.readAccessToken(mContext).getUid() + ".txt");
break;
case Constants.DELETE_WEIBO_TYPE6:
response = SDCardUtil.get(mContext, SDCardUtil.getSDCardPath() + "/weiSwift/profile", "我的收藏" + AccessTokenKeeper.readAccessToken(mContext).getUid() + ".txt");
FavoriteList favoriteList = FavoriteList.parse(response);
if (favoriteList != null && favoriteList.favorites.size() > 0 && position < favoriteList.favorites.size()) {
favoriteList.favorites.remove(position);
SDCardUtil.put(mContext, SDCardUtil.getSDCardPath() + "/weiSwift/profile", "我的收藏" + AccessTokenKeeper.readAccessToken(mContext).getUid() + ".txt", new Gson().toJson(favoriteList));
}
return;
}
StatusList statusList = StatusList.parse(response);
if (statusList != null && statusList.statuses.size() > 0 && position < statusList.statuses.size()) {
statusList.statuses.remove(position);
switch (weiboGroup) {
case Constants.DELETE_WEIBO_TYPE1:
SDCardUtil.put(mContext, SDCardUtil.getSDCardPath() + "/weiSwift/home", "全部微博" + AccessTokenKeeper.readAccessToken(mContext).getUid() + ".txt", new Gson().toJson(statusList));
break;
case Constants.DELETE_WEIBO_TYPE2:
SDCardUtil.put(mContext, SDCardUtil.getSDCardPath() + "/weiSwift/profile", "我的全部微博" + AccessTokenKeeper.readAccessToken(mContext).getUid() + ".txt", new Gson().toJson(statusList));
break;
case Constants.DELETE_WEIBO_TYPE3:
SDCardUtil.put(mContext, SDCardUtil.getSDCardPath() + "/weiSwift/profile", "我的原创微博" + AccessTokenKeeper.readAccessToken(mContext).getUid() + ".txt", new Gson().toJson(statusList));
break;
case Constants.DELETE_WEIBO_TYPE4:
SDCardUtil.put(mContext, SDCardUtil.getSDCardPath() + "/weiSwift/profile", "我的图片微博" + AccessTokenKeeper.readAccessToken(mContext).getUid() + ".txt", new Gson().toJson(statusList));
break;
case Constants.DELETE_WEIBO_TYPE5:
SDCardUtil.put(mContext, SDCardUtil.getSDCardPath() + "/weiSwift/home", "好友圈" + AccessTokenKeeper.readAccessToken(mContext).getUid() + ".txt", new Gson().toJson(statusList));
break;
}
}
}
/**
* 取消关注某一用户
*
* @param context
*/
public void user_destroy(User user, Context context) {
mContext = context;
mPopupWindows.dismiss();
friendShipModel.user_destroy(user, context, new FriendShipModel.OnRequestListener() {
@Override
public void onSuccess() {
}
@Override
public void onError(String error) {
}
}, false);
}
@Override
public void user_create(User user, Context context) {
mContext = context;
mPopupWindows.dismiss();
friendShipModel.user_create(user, context, new FriendShipModel.OnRequestListener() {
@Override
public void onSuccess() {
}
@Override
public void onError(String error) {
}
}, false);
}
/**
* 收藏一条微博
*
* @param status
* @param context
*/
public void createFavorite(Status status, Context context) {
mContext = context;
mPopupWindows.dismiss();
favoriteListModel.createFavorite(status, context, new FavoriteListModel.OnRequestUIListener() {
@Override
public void onSuccess() {
}
@Override
public void onError(String error) {
}
});
}
/**
* 取消收藏一条微博
*
* @param status
* @param context
*/
@Override
public void cancalFavorite(final int position, Status status, Context context, final boolean deleteAnimation) {
mContext = context;
if (mPopupWindows != null) {
mPopupWindows.dismiss();
}
favoriteListModel.cancelFavorite(status, context, new FavoriteListModel.OnRequestUIListener() {
@Override
public void onSuccess() {
if (deleteAnimation) {
//内存删除
mAdapter.removeDataItem(position);
//显示动画效果
mAdapter.notifyItemRemoved(position);
//对于被删掉的位置及其后range大小范围内的view进行重新onBindViewHolder
mAdapter.notifyItemRangeChanged(position, mAdapter.getItemCount() - (1 + position));
//本地删除
updateLocalFile(Constants.DELETE_WEIBO_TYPE6, position);
}
}
@Override
public void onError(String error) {
}
});
}
}