feat:新增公聊新消息过滤功能(只接收文本、图片、1081)
This commit is contained in:
@@ -135,10 +135,7 @@ class PublicChatRoomMessageWidget : FrameLayoutRoomWidget {
|
||||
}
|
||||
|
||||
private fun filterMessageForMessageList(message: ChatRoomMessage): Boolean {
|
||||
if (message.msgType == MsgTypeEnum.notification) {
|
||||
return true
|
||||
}
|
||||
if (message.attachment is HeadlineChangedAttachment) {
|
||||
if (message.msgType == MsgTypeEnum.custom && message.attachment is HeadlineChangedAttachment) {
|
||||
val data = (message.attachment as HeadlineChangedAttachment).headlineData
|
||||
if (data == null || !data.isValid()) {
|
||||
return true
|
||||
|
@@ -42,7 +42,9 @@ open class ChatRoomClient(val sessionId: String) : ICleared, ILog {
|
||||
|
||||
private val receiveMessageObserver = Observer<List<ChatRoomMessage>> {
|
||||
val list = it.filter { item ->
|
||||
item.sessionId == sessionId
|
||||
item.sessionId == sessionId && !ChatRoomClientManager.publicChatRoomReceiveMessageFilter.filter(
|
||||
item
|
||||
)
|
||||
}
|
||||
messagePublishSubject.onNext(list)
|
||||
}
|
||||
|
@@ -1,11 +1,37 @@
|
||||
package com.chwl.app.public_chat.core
|
||||
|
||||
import com.chwl.core.im.custom.bean.CustomAttachment
|
||||
import com.chwl.core.im.custom.bean.HeadlineChangedAttachment
|
||||
import com.chwl.core.initial.InitialModel
|
||||
import com.netease.nimlib.sdk.chatroom.model.ChatRoomMessage
|
||||
import com.netease.nimlib.sdk.msg.constant.MsgTypeEnum
|
||||
|
||||
object ChatRoomClientManager {
|
||||
|
||||
private val clients = HashMap<String, ChatRoomClient>()
|
||||
|
||||
val publicChatRoomReceiveMessageFilter: ChatRoomMessageFilter = object : ChatRoomMessageFilter {
|
||||
override fun filter(message: ChatRoomMessage): Boolean {
|
||||
if (message.msgType == MsgTypeEnum.image || message.msgType == MsgTypeEnum.text) {
|
||||
return false
|
||||
}
|
||||
if (message.msgType == MsgTypeEnum.custom) {
|
||||
val attachment: CustomAttachment =
|
||||
(message.attachment as? CustomAttachment) ?: return true
|
||||
when (attachment.first) {
|
||||
CustomAttachment.CUSTOM_MSG_HEADLINE_CHANGED -> {
|
||||
when (attachment.second) {
|
||||
CustomAttachment.CUSTOM_MSG_HEADLINE_CHANGED_SUB -> {
|
||||
return false
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return true
|
||||
}
|
||||
}
|
||||
|
||||
fun getPublicChatClient(): ChatRoomClient? {
|
||||
val sessionId = InitialModel.get().publicChatSessionId
|
||||
return getClient(sessionId)
|
||||
|
@@ -0,0 +1,7 @@
|
||||
package com.chwl.app.public_chat.core
|
||||
|
||||
import com.netease.nimlib.sdk.chatroom.model.ChatRoomMessage
|
||||
|
||||
interface ChatRoomMessageFilter {
|
||||
fun filter(message: ChatRoomMessage): Boolean
|
||||
}
|
@@ -12,6 +12,7 @@ import androidx.recyclerview.widget.LinearLayoutManager;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import com.chwl.app.R;
|
||||
import com.chwl.app.public_chat.core.ChatRoomClientManager;
|
||||
import com.chwl.app.public_chat.core.ChatRoomMessageAdapter;
|
||||
import com.chwl.core.im.custom.bean.HeadlineChangedAttachment;
|
||||
import com.chwl.core.module_hall.im.HallAttachment;
|
||||
@@ -368,10 +369,10 @@ public class PublicChatRoomMessageListPanel {
|
||||
}
|
||||
|
||||
public boolean filterMessage(ChatRoomMessage message) {
|
||||
if (message.getMsgType() == MsgTypeEnum.notification) {
|
||||
if (ChatRoomClientManager.INSTANCE.getPublicChatRoomReceiveMessageFilter().filter(message)) {
|
||||
return true;
|
||||
}
|
||||
if (message.getAttachment() instanceof HeadlineChangedAttachment) {
|
||||
if (message.getMsgType() == MsgTypeEnum.custom && message.getAttachment() instanceof HeadlineChangedAttachment) {
|
||||
HeadlineBean data = ((HeadlineChangedAttachment) message.getAttachment()).getHeadlineData();
|
||||
if (data == null || !data.isValid()) {
|
||||
return true;
|
||||
|
Reference in New Issue
Block a user