From cd90bdb3aa35eeb80313c9ee56cfad2b32cda26a Mon Sep 17 00:00:00 2001 From: huangjian Date: Thu, 2 Jun 2022 11:41:56 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8DMessageView=E5=92=8CAvRoomDat?= =?UTF-8?q?aManager=E4=B8=AD=E7=9A=84chatRoomMessages=E4=B8=8D=E5=90=8C?= =?UTF-8?q?=E6=AD=A5=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../erban/avroom/fragment/BaseRoomFragment.kt | 14 +++++++++----- .../yizhuan/erban/avroom/widget/MessageView.java | 13 ++++++++++--- .../manager/AvRoomDataManager.java | 2 +- 3 files changed, 20 insertions(+), 9 deletions(-) diff --git a/app/src/main/java/com/yizhuan/erban/avroom/fragment/BaseRoomFragment.kt b/app/src/main/java/com/yizhuan/erban/avroom/fragment/BaseRoomFragment.kt index ad6d73824..008119bd4 100644 --- a/app/src/main/java/com/yizhuan/erban/avroom/fragment/BaseRoomFragment.kt +++ b/app/src/main/java/com/yizhuan/erban/avroom/fragment/BaseRoomFragment.kt @@ -273,11 +273,12 @@ open class BaseRoomFragment?> : // 刷新礼物列表,获取房间专属礼物列表 GiftModel.get().refreshGiftList(AvRoomDataManager.get().roomUid.toString()).subscribe() checkFollowOwner() - mvpPresenter?.loadMessageHistory(AvRoomDataManager.get().clearScreenTime) mvpPresenter?.loadRoomRank() //最小化恢复时,更新礼物值 if (isRoomMin) { GiftValueMrg.get().updateRoomGiftValue(false) + } else { + mvpPresenter?.loadMessageHistory(AvRoomDataManager.get().clearScreenTime) } } @@ -408,7 +409,7 @@ open class BaseRoomFragment?> : * 嗨聊房切换重置公屏消息(绿色公告) */ private fun addMessage(msg: ChatRoomMessage?) { - messageView.addMessages(msg) + AvRoomDataManager.get().addChatRoomMessage(msg) } /** @@ -1043,11 +1044,12 @@ open class BaseRoomFragment?> : val roomFollowOwnerAttachment = RoomFollowOwnerAttachment() roomFollowOwnerAttachment.ownerUid = AvRoomDataManager.get().roomUid roomFollowOwnerAttachment.userInfo = userInfo - messageView.addMessages( + AvRoomDataManager.get().addChatRoomMessage( ChatRoomMessageBuilder.createChatRoomCustomMessage( roomInfo.roomId.toString(), roomFollowOwnerAttachment ) ) + } } @@ -1068,9 +1070,11 @@ open class BaseRoomFragment?> : val roomFollowOwnerAttachment = RoomFollowOwnerAttachment2() roomFollowOwnerAttachment.ownerUid = AvRoomDataManager.get().roomUid roomFollowOwnerAttachment.userInfo = userInfo - messageView.addMessages( + + AvRoomDataManager.get().addChatRoomMessage( ChatRoomMessageBuilder.createChatRoomCustomMessage( - roomInfo.roomId.toString(), roomFollowOwnerAttachment + roomInfo.roomId.toString(), + roomFollowOwnerAttachment ) ) } diff --git a/app/src/main/java/com/yizhuan/erban/avroom/widget/MessageView.java b/app/src/main/java/com/yizhuan/erban/avroom/widget/MessageView.java index 69448e2cb..d7fbf5b57 100644 --- a/app/src/main/java/com/yizhuan/erban/avroom/widget/MessageView.java +++ b/app/src/main/java/com/yizhuan/erban/avroom/widget/MessageView.java @@ -406,18 +406,25 @@ public class MessageView extends FrameLayout { addMessages(messages); } - public int addMessages(ChatRoomMessage msg) { - if (msg == null) return -1; + /** + * 添加公屏消息请使用 {@link AvRoomDataManager#addChatRoomMessage(ChatRoomMessage)} + */ + private void addMessages(ChatRoomMessage msg) { + if (msg == null) return; chatRoomMessages.add(msg); //通知adapter 刷新 mMessageAdapter.notifyItemInserted(mMessageAdapter.getItemCount() - 1); showTipsOrScrollToBottom(); checkAtMe(msg, false); - return chatRoomMessages.size() - 1; } public void addHistoryMessages(List messages) { chatRoomMessages.addAll(chatRoomMessages.size() > 0 ? 1 : 0, messages); + + //同步AvRoomDataManager里面的公屏消息列表 + List cacheMessages = AvRoomDataManager.get().getChatRoomMessages(); + cacheMessages.addAll(cacheMessages.size() > 0 ? 1 : 0, messages); + mMessageAdapter.notifyDataSetChanged(); messageListView.scrollToPosition(mMessageAdapter.getItemCount() - 1); for (ChatRoomMessage message : messages) { diff --git a/core/src/main/java/com/yizhuan/xchat_android_core/manager/AvRoomDataManager.java b/core/src/main/java/com/yizhuan/xchat_android_core/manager/AvRoomDataManager.java index 685420d5c..e24c70d26 100644 --- a/core/src/main/java/com/yizhuan/xchat_android_core/manager/AvRoomDataManager.java +++ b/core/src/main/java/com/yizhuan/xchat_android_core/manager/AvRoomDataManager.java @@ -863,7 +863,7 @@ public final class AvRoomDataManager { return chatRoomMessages; } - private void addChatRoomMessage(ChatRoomMessage msg) { + public void addChatRoomMessage(ChatRoomMessage msg) { if (msg == null) return; if (msg.getMsgType() == MsgTypeEnum.notification) {