修复MessageView和AvRoomDataManager中的chatRoomMessages不同步的问题

This commit is contained in:
huangjian
2022-06-02 11:41:56 +08:00
parent e18a0d7c65
commit cd90bdb3aa
3 changed files with 20 additions and 9 deletions

View File

@@ -273,11 +273,12 @@ open class BaseRoomFragment<V : IBaseRoomView?, P : BaseRoomPresenter<V>?> :
// 刷新礼物列表,获取房间专属礼物列表
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<V : IBaseRoomView?, P : BaseRoomPresenter<V>?> :
* 嗨聊房切换重置公屏消息(绿色公告)
*/
private fun addMessage(msg: ChatRoomMessage?) {
messageView.addMessages(msg)
AvRoomDataManager.get().addChatRoomMessage(msg)
}
/**
@@ -1043,11 +1044,12 @@ open class BaseRoomFragment<V : IBaseRoomView?, P : BaseRoomPresenter<V>?> :
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<V : IBaseRoomView?, P : BaseRoomPresenter<V>?> :
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
)
)
}

View File

@@ -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<ChatRoomMessage> messages) {
chatRoomMessages.addAll(chatRoomMessages.size() > 0 ? 1 : 0, messages);
//同步AvRoomDataManager里面的公屏消息列表
List<ChatRoomMessage> cacheMessages = AvRoomDataManager.get().getChatRoomMessages();
cacheMessages.addAll(cacheMessages.size() > 0 ? 1 : 0, messages);
mMessageAdapter.notifyDataSetChanged();
messageListView.scrollToPosition(mMessageAdapter.getItemCount() - 1);
for (ChatRoomMessage message : messages) {

View File

@@ -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) {