From e511d486679d40b59da86acdc4949c4559a900e4 Mon Sep 17 00:00:00 2001 From: kehaoyuan Date: Thu, 22 Aug 2019 14:41:34 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B6=88=E6=81=AF=E4=B8=AD=E5=BF=83=E6=94=AF?= =?UTF-8?q?=E6=8C=81=E5=88=A0=E9=99=A4=E6=93=8D=E4=BD=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../gh/gamecenter/message/KeFuFragment.java | 6 ++++- .../message/KeFuFragmentAdapter.java | 10 ++++++++ .../gh/gamecenter/message/KeFuViewModel.kt | 20 ++++++++++++++++ .../gh/gamecenter/message/MessageAdapter.java | 22 ++++++++++++++++- .../gamecenter/message/MessageFragment.java | 10 +++++++- .../message/MessageNormalAdapter.java | 17 ++++++++++++- .../message/MessageNormalFragment.java | 11 ++++++++- .../message/MessageNormalViewModel.kt | 24 +++++++++++++++++++ .../gh/gamecenter/message/MessageViewModel.kt | 20 ++++++++++++++++ .../retrofit/service/ApiService.java | 12 ++++++++++ app/src/main/res/layout/message_item.xml | 1 + 11 files changed, 148 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/com/gh/gamecenter/message/KeFuFragment.java b/app/src/main/java/com/gh/gamecenter/message/KeFuFragment.java index 249609bcfe..7f6b39996c 100644 --- a/app/src/main/java/com/gh/gamecenter/message/KeFuFragment.java +++ b/app/src/main/java/com/gh/gamecenter/message/KeFuFragment.java @@ -1,8 +1,11 @@ package com.gh.gamecenter.message; import androidx.lifecycle.ViewModelProviders; + import android.os.Bundle; + import androidx.annotation.Nullable; + import android.view.View; import com.gh.common.util.MtaHelper; @@ -17,6 +20,7 @@ import com.halo.assistant.HaloApp; * 消息-客服 */ public class KeFuFragment extends ListFragment { + private KeFuFragmentAdapter mAdapter; private MessageUnreadViewModel mUnreadViewModel; @@ -49,7 +53,7 @@ public class KeFuFragment extends ListFragment @Override public void onListClick(View view, int position, Object data) { - if (view.getId() == R.id.message_kaifu_item) { + if (view.getId() == R.id.message_kaifu_item) { MtaHelper.onEvent("消息中心", "系统_二级列表", "点击卡片"); MessageKeFuEntity keFuEntity = (MessageKeFuEntity) data; if (!keFuEntity.isRead()) { diff --git a/app/src/main/java/com/gh/gamecenter/message/KeFuFragmentAdapter.java b/app/src/main/java/com/gh/gamecenter/message/KeFuFragmentAdapter.java index a44c99d0e4..a300c0e0ef 100644 --- a/app/src/main/java/com/gh/gamecenter/message/KeFuFragmentAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/message/KeFuFragmentAdapter.java @@ -190,6 +190,16 @@ public class KeFuFragmentAdapter extends ListAdapter { PersonalHomeActivity.startTargetActivity(mContext, serviceEntity.getId(), mEntrance, "消息中心-系统"); } }); + + viewHolder.itemView.setOnLongClickListener(v -> { + DialogUtils.showAlertDialog(mContext, + "删除消息", + "消息删除将不可恢复,确定删除吗?", + "确定", "取消", () -> { + mListViewModel.deleteMessage(keFuEntity.getId()); + }, null); + return false; + }); } private void linkSkip(MessageLinkEntity data) { diff --git a/app/src/main/java/com/gh/gamecenter/message/KeFuViewModel.kt b/app/src/main/java/com/gh/gamecenter/message/KeFuViewModel.kt index bfcac2dadf..b70cae6704 100644 --- a/app/src/main/java/com/gh/gamecenter/message/KeFuViewModel.kt +++ b/app/src/main/java/com/gh/gamecenter/message/KeFuViewModel.kt @@ -49,4 +49,24 @@ class KeFuViewModel(application: Application) : ListViewModel() { }) } + + fun deleteMessage(messageId: String) { + RetrofitManager.getInstance(getApplication()).api + .deleteKaiFuMessage(UserManager.getInstance().userId, messageId) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(object : Response() { + override fun onResponse(response: ResponseBody?) { + val listData = mListLiveData.value + if (listData != null) { + for (data in listData) { + if (data.id == messageId) { + listData.remove(data) + mListLiveData.postValue(listData) + } + } + } + } + }) + } } \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/message/MessageAdapter.java b/app/src/main/java/com/gh/gamecenter/message/MessageAdapter.java index 2b5d0b470b..7d94e846b4 100644 --- a/app/src/main/java/com/gh/gamecenter/message/MessageAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/message/MessageAdapter.java @@ -1,13 +1,16 @@ package com.gh.gamecenter.message; import android.content.Context; + import androidx.databinding.DataBindingUtil; import androidx.recyclerview.widget.RecyclerView; + import android.view.View; import android.view.ViewGroup; import com.gh.base.OnListClickListener; import com.gh.common.constant.ItemViewType; +import com.gh.common.util.DialogUtils; import com.gh.gamecenter.R; import com.gh.gamecenter.adapter.viewholder.FooterViewHolder; import com.gh.gamecenter.baselist.ListAdapter; @@ -19,6 +22,8 @@ import com.gh.gamecenter.entity.MessageUnreadEntity; import java.util.ArrayList; import java.util.List; +import static com.tencent.stat.hybrid.StatHybridHandler.getContext; + /** * Created by khy on 23/03/18. */ @@ -29,12 +34,18 @@ public class MessageAdapter extends ListAdapter { private MessageUnreadEntity mUnreadEntity; + private MessageViewModel mViewModel; + private String mEntrance; - public MessageAdapter(Context context, OnListClickListener clickListener, String entrance) { + public MessageAdapter(Context context, + OnListClickListener clickListener, + String entrance, + MessageViewModel viewModel) { super(context); mClickListener = clickListener; mEntrance = entrance; + mViewModel = viewModel; } @Override @@ -84,6 +95,15 @@ public class MessageAdapter extends ListAdapter { MessageItemViewHolder viewHolder = (MessageItemViewHolder) holder; MessageEntity entity = mEntityList.get(position - TOP_ITEM_COUNT); viewHolder.setMessageItem(entity, mContext, mEntrance); + viewHolder.itemView.setOnLongClickListener(v -> { + DialogUtils.showAlertDialog(mContext, + "删除消息", + "消息删除将不可恢复,确定删除吗?", + "确定", "取消", () -> { + mViewModel.deleteMessage(entity.getId()); + }, null); + return false; + }); break; case ItemViewType.ITEM_FOOTER: FooterViewHolder footerViewHolder = (FooterViewHolder) holder; diff --git a/app/src/main/java/com/gh/gamecenter/message/MessageFragment.java b/app/src/main/java/com/gh/gamecenter/message/MessageFragment.java index 65a137c2ac..25c8c0f69c 100644 --- a/app/src/main/java/com/gh/gamecenter/message/MessageFragment.java +++ b/app/src/main/java/com/gh/gamecenter/message/MessageFragment.java @@ -1,10 +1,14 @@ package com.gh.gamecenter.message; import androidx.lifecycle.ViewModelProviders; + import android.os.Bundle; + import androidx.annotation.Nullable; + import android.view.View; +import com.gh.common.util.DialogUtils; import com.gh.common.util.MtaHelper; import com.gh.gamecenter.MessageInviteActivity; import com.gh.gamecenter.MessageKeFuActivity; @@ -43,7 +47,11 @@ public class MessageFragment extends ListFragment { private OnListClickListener mClickListener; + private MessageNormalViewModel mViewModel; private String mEntrance; private String mOuterInfo; public MessageNormalAdapter(Context context, OnListClickListener clickListener, String entrance, - String outerInfo) { + String outerInfo, + MessageNormalViewModel viewModel) { super(context); mClickListener = clickListener; mEntrance = entrance; mOuterInfo = outerInfo; + mViewModel = viewModel; } @Override @@ -58,6 +64,15 @@ public class MessageNormalAdapter extends ListAdapter { MessageEntity entity = mEntityList.get(position); entity.setRead(true); viewHolder.setMessageItem(entity, mContext, mEntrance); + viewHolder.itemView.setOnLongClickListener(v -> { + DialogUtils.showAlertDialog(mContext, + "删除消息", + "消息删除将不可恢复,确定删除吗?", + "确定", "取消", () -> { + mViewModel.deleteMessage(entity.getId()); + }, null); + return false; + }); break; case ItemViewType.ITEM_FOOTER: ((FooterViewHolder) holder).initFooterViewHolder(mIsLoading, mIsNetworkError, mIsOver, R.string.ask_loadover_hint); diff --git a/app/src/main/java/com/gh/gamecenter/message/MessageNormalFragment.java b/app/src/main/java/com/gh/gamecenter/message/MessageNormalFragment.java index 78a60db856..04f7a672e8 100644 --- a/app/src/main/java/com/gh/gamecenter/message/MessageNormalFragment.java +++ b/app/src/main/java/com/gh/gamecenter/message/MessageNormalFragment.java @@ -1,10 +1,14 @@ package com.gh.gamecenter.message; import androidx.lifecycle.ViewModelProviders; + import android.os.Bundle; + import androidx.annotation.Nullable; + import android.view.View; +import com.gh.common.util.DialogUtils; import com.gh.common.util.EntranceUtils; import com.gh.gamecenter.R; import com.gh.gamecenter.baselist.ListAdapter; @@ -71,7 +75,12 @@ public class MessageNormalFragment extends ListFragment(application) { @@ -47,6 +51,26 @@ class MessageNormalViewModel(application: Application, // }) // } + fun deleteMessage(messageId: String) { + RetrofitManager.getInstance(getApplication()).api + .deleteMessage(UserManager.getInstance().userId, messageId) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(object : Response() { + override fun onResponse(response: ResponseBody?) { + val listData = mListLiveData.value + if (listData != null) { + for (data in listData) { + if (data.id == messageId) { + listData.remove(data) + mListLiveData.postValue(listData) + } + } + } + } + }) + } + class Factory(private val mApplication: Application, private val mMessageType: String) : ViewModelProvider.NewInstanceFactory() { override fun create(modelClass: Class): T { diff --git a/app/src/main/java/com/gh/gamecenter/message/MessageViewModel.kt b/app/src/main/java/com/gh/gamecenter/message/MessageViewModel.kt index 7db892b386..33c1412f50 100644 --- a/app/src/main/java/com/gh/gamecenter/message/MessageViewModel.kt +++ b/app/src/main/java/com/gh/gamecenter/message/MessageViewModel.kt @@ -25,6 +25,26 @@ class MessageViewModel(application: Application) : ListViewModel>(mListLiveData) { mResultLiveData.postValue(it) } } + fun deleteMessage(messageId: String) { + RetrofitManager.getInstance(getApplication()).api + .deleteMessage(UserManager.getInstance().userId, messageId) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(object : Response() { + override fun onResponse(response: ResponseBody?) { + val listData = mListLiveData.value + if (listData != null) { + for (data in listData) { + if (data.id == messageId) { + listData.remove(data) + mListLiveData.postValue(listData) + } + } + } + } + }) + } + fun postMessageRead(messageId: String, type: String) { diff --git a/app/src/main/java/com/gh/gamecenter/retrofit/service/ApiService.java b/app/src/main/java/com/gh/gamecenter/retrofit/service/ApiService.java index 6a1debfaf5..c5693f5abd 100644 --- a/app/src/main/java/com/gh/gamecenter/retrofit/service/ApiService.java +++ b/app/src/main/java/com/gh/gamecenter/retrofit/service/ApiService.java @@ -1264,6 +1264,18 @@ public interface ApiService { @POST("users/{user_id}/messages/{message_id}:read") Observable postMessageRead(@Path("user_id") String userId, @Path("message_id") String messageId, @Body RequestBody body); + /** + * 将消息删除 + */ + @POST("users/{user_id}/messages/{message_id}:inactivate") + Observable deleteMessage(@Path("user_id") String userId, @Path("message_id") String messageId); + + /** + * 将消息删除 + */ + @POST("users/{user_id}/private_messages/{message_id}:inactivate") + Observable deleteKaiFuMessage(@Path("user_id") String userId, @Path("message_id") String messageId); + /** * 在社区发布文章 */ diff --git a/app/src/main/res/layout/message_item.xml b/app/src/main/res/layout/message_item.xml index ae731b9d73..243a344593 100644 --- a/app/src/main/res/layout/message_item.xml +++ b/app/src/main/res/layout/message_item.xml @@ -25,6 +25,7 @@ android:layout_width = "30dp" android:layout_height = "30dp" android:layout_marginTop = "2dp" + app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintTop_toTopOf = "parent" >