/* * The MIT License (MIT) * * Copyright (c) 2014-2015 Umeng, Inc * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ package com.umeng.comm.ui.presenter.impl; import android.app.Activity; import android.content.Context; import android.content.DialogInterface; import android.os.Bundle; import android.text.TextUtils; import com.umeng.comm.core.beans.FeedItem; import com.umeng.comm.core.constants.ErrorCode; import com.umeng.comm.core.constants.HttpProtocol; import com.umeng.comm.core.impl.CommunityFactory; import com.umeng.comm.core.listeners.Listeners.CommListener; import com.umeng.comm.core.listeners.Listeners.FetchListener; import com.umeng.comm.core.listeners.Listeners.SimpleFetchListener; import com.umeng.comm.core.nets.Response; import com.umeng.comm.core.nets.responses.FeedItemResponse; import com.umeng.comm.core.nets.responses.LoginResponse; import com.umeng.comm.core.nets.responses.SimpleResponse; import com.umeng.comm.core.nets.uitls.NetworkUtils; import com.umeng.comm.core.utils.CommonUtils; import com.umeng.comm.core.utils.ResFinder; import com.umeng.comm.core.utils.ToastMsg; import com.umeng.comm.ui.dialogs.ConfirmDialog; import com.umeng.comm.ui.mvpview.MvpFeedDetailActivityView; import com.umeng.comm.ui.presenter.BasePresenter; import com.umeng.comm.ui.utils.BroadcastUtils; public class FeedDetailActivityPresenter extends BasePresenter { MvpFeedDetailActivityView mActivityView; FeedItem mFeedItem; public FeedDetailActivityPresenter() { } public FeedDetailActivityPresenter(MvpFeedDetailActivityView view) { mActivityView = view; if (mActivityView instanceof Context) { mContext = (Context) mActivityView; mCommunitySDK = CommunityFactory.getCommSDK(mContext); } else { throw new NullPointerException("FeedDetailActivityPresenter构造函数的参数不是Context类型"); } } public void setActivityView(MvpFeedDetailActivityView view) { this.mActivityView = view; } public void setFeedItem(FeedItem feedItem) { this.mFeedItem = feedItem; } public void showDeleteConfirmDialog() { ConfirmDialog.showDialog(mContext, ResFinder.getString("umeng_comm_delete_tips"), new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int whitch) { deleteFeed(); } }); } public void showReportConfirmDialog() { ConfirmDialog.showDialog(mContext, ResFinder.getString("umeng_comm_sure_spam"), new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int whitch) { reportCurrentFeed(); } }); } private Bundle mExtraData; public void setExtraData(Bundle extra) { this.mExtraData = new Bundle(extra); // if (mExtraData.containsKey(HttpProtocol.COMMENT_ID_KEY)) { // String commentId = mExtraData.getString(HttpProtocol.COMMENT_ID_KEY); // mExtraData.clear(); // mExtraData.putString(HttpProtocol.COMMENT_ID_KEY, commentId); // // 表示该请求是从推送消息进入到Feed相应页面 // mExtraData.putString("viewFrom", "push"); // } String commentId = mExtraData.getString(HttpProtocol.COMMENT_ID_KEY); mExtraData.clear(); if (!TextUtils.isEmpty(commentId)) { mExtraData.putString(HttpProtocol.COMMENT_ID_KEY, commentId); } // 表示该请求是从推送消息进入到Feed相应页面 mExtraData.putString("viewFrom", "push"); } public void fetchFeedWithId(String feedId) { mActivityView.showLoading(true); // 获取feed的信息 mCommunitySDK.fetchFeedWithId(feedId, mExtraData, new SimpleFetchListener<FeedItemResponse>() { @Override public void onComplete(FeedItemResponse response) { mActivityView.showLoading(false); if (NetworkUtils.handleResponseAll(response)) { mActivityView.fetchFeedFaild(); return; } if (response.errCode == ErrorCode.ERR_CODE_FEED_UNAVAILABLE) { ToastMsg.showShortMsgByResName("umeng_comm_feed_unavailable"); ((Activity)mContext).finish(); return; } mActivityView.fetchDataComplete(response.result); } }); } /** * 从server端删除该条feed</br> */ private void deleteFeed() { mCommunitySDK.deleteFeed(mFeedItem.id, new CommListener() { @Override public void onStart() { } @Override public void onComplete(Response response) { if (NetworkUtils.handleResponseComm(response)) { return; } if (response.errCode == 0) { if (mActivityView != null) { mActivityView.deleteFeedSuccess(); } deleteFeedFromDB(); sendDeleteFeedBroadcast(); } final String resName = response.errCode == 0 ? "umeng_comm_delete_success" : "umeng_comm_delete_failed"; ToastMsg.showShortMsgByResName(resName); } }); } /** * 发布删除feed的广播,更新其他UI界面的转发数量 */ private void sendDeleteFeedBroadcast() { BroadcastUtils.sendFeedDeleteBroadcast(mContext, mFeedItem); FeedItem originFeedItem = mFeedItem.sourceFeed; // 将原始的feed数量减1 if (originFeedItem != null && !mFeedItem.sourceFeedId.equals(originFeedItem.id)) { mFeedItem.sourceFeed.forwardCount--; BroadcastUtils.sendFeedUpdateBroadcast(mContext, mFeedItem.sourceFeed); } } /** * 从数据库中删除此feed</br> */ private void deleteFeedFromDB() { mDatabaseAPI.getFeedDBAPI().deleteFeedFromDB(mFeedItem.id); } private void reportCurrentFeed() { SimpleFetchListener<LoginResponse> loginListener = new SimpleFetchListener<LoginResponse>() { @Override public void onComplete(LoginResponse response) { if (response.errCode != ErrorCode.NO_ERROR) { return; } // 举报feed mCommunitySDK.spammerFeed(mFeedItem.id, new FetchListener<SimpleResponse>() { @Override public void onStart() { } @Override public void onComplete(SimpleResponse response) { if (NetworkUtils.handleResponseComm(response)) { return; } if (response.errCode == ErrorCode.NO_ERROR) { ToastMsg.showShortMsgByResName( "umeng_comm_text_spammer_success"); } else if (response.errCode == ErrorCode.SPAMMERED_CODE) { ToastMsg.showShortMsgByResName( "umeng_comm_text_spammered"); } else { ToastMsg.showShortMsgByResName( "umeng_comm_text_spammer_failed"); } } }); } }; CommonUtils.checkLoginAndFireCallback(mContext, loginListener); } }