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