优化AI消息处理逻辑,区分AI辅助模式与AI接管模式,确保在接管模式下直接发送消息而不经过MessageEnter组件。同时,调整相关组件的状态管理,提升代码可读性和维护性。
This commit is contained in:
@@ -8,17 +8,23 @@ import { Modal } from "antd";
|
||||
import { useCustomerStore, updateCustomerList } from "../weChat/customer";
|
||||
// 消息处理器类型定义
|
||||
type MessageHandler = (message: WebSocketMessage) => void;
|
||||
const addMessage = useWeChatStore.getState().addMessage;
|
||||
const recallMessage = useWeChatStore.getState().recallMessage;
|
||||
const receivedMsg = useWeChatStore.getState().receivedMsg;
|
||||
const findMessageBySeq = useWeChatStore.getState().findMessageBySeq;
|
||||
const findMessageById = useWeChatStore.getState().findMessageById;
|
||||
const updateMessage = useWeChatStore.getState().updateMessage;
|
||||
const updateMomentCommonLoading =
|
||||
useWeChatStore.getState().updateMomentCommonLoading;
|
||||
const addMomentCommon = useWeChatStore.getState().addMomentCommon;
|
||||
const setFileDownloadUrl = useWeChatStore.getState().setFileDownloadUrl;
|
||||
const setFileDownloading = useWeChatStore.getState().setFileDownloading;
|
||||
|
||||
// 延迟获取 store 方法,避免循环依赖问题
|
||||
const getWeChatStoreMethods = () => {
|
||||
const state = useWeChatStore.getState();
|
||||
return {
|
||||
addMessage: state.addMessage,
|
||||
recallMessage: state.recallMessage,
|
||||
receivedMsg: state.receivedMsg,
|
||||
findMessageBySeq: state.findMessageBySeq,
|
||||
findMessageById: state.findMessageById,
|
||||
updateMessage: state.updateMessage,
|
||||
updateMomentCommonLoading: state.updateMomentCommonLoading,
|
||||
addMomentCommon: state.addMomentCommon,
|
||||
setFileDownloadUrl: state.setFileDownloadUrl,
|
||||
setFileDownloading: state.setFileDownloading,
|
||||
};
|
||||
};
|
||||
// 消息处理器映射
|
||||
const messageHandlers: Record<string, MessageHandler> = {
|
||||
// 微信账号存活状态响应
|
||||
@@ -46,6 +52,7 @@ const messageHandlers: Record<string, MessageHandler> = {
|
||||
},
|
||||
// 发送消息响应
|
||||
CmdSendMessageResp: message => {
|
||||
const { findMessageBySeq, updateMessage } = getWeChatStoreMethods();
|
||||
const msg = findMessageBySeq(message.seq);
|
||||
if (msg) {
|
||||
updateMessage(message.seq, {
|
||||
@@ -55,6 +62,7 @@ const messageHandlers: Record<string, MessageHandler> = {
|
||||
}
|
||||
},
|
||||
CmdSendMessageResult: message => {
|
||||
const { updateMessage } = getWeChatStoreMethods();
|
||||
updateMessage(message.friendMessageId || message.chatroomMessageId, {
|
||||
sendStatus: 0,
|
||||
});
|
||||
@@ -68,6 +76,7 @@ const messageHandlers: Record<string, MessageHandler> = {
|
||||
//收到消息
|
||||
CmdNewMessage: (message: Messages) => {
|
||||
// 处理消息本身
|
||||
const { receivedMsg } = getWeChatStoreMethods();
|
||||
receivedMsg(message.friendMessage || message.chatroomMessage);
|
||||
|
||||
// 触发会话列表更新事件
|
||||
@@ -107,6 +116,7 @@ const messageHandlers: Record<string, MessageHandler> = {
|
||||
// setVideoUrl(message.friendMessageId, message.url);
|
||||
},
|
||||
CmdDownloadFileResult: message => {
|
||||
const { setFileDownloadUrl, setFileDownloading } = getWeChatStoreMethods();
|
||||
const messageId = message.friendMessageId || message.chatroomMessageId;
|
||||
|
||||
if (!messageId) {
|
||||
@@ -124,6 +134,8 @@ const messageHandlers: Record<string, MessageHandler> = {
|
||||
},
|
||||
|
||||
CmdFetchMomentResult: message => {
|
||||
const { addMomentCommon, updateMomentCommonLoading } =
|
||||
getWeChatStoreMethods();
|
||||
addMomentCommon(message.result);
|
||||
updateMomentCommonLoading(false);
|
||||
},
|
||||
@@ -162,16 +174,18 @@ const messageHandlers: Record<string, MessageHandler> = {
|
||||
|
||||
//撤回消息
|
||||
CmdMessageRecalled: message => {
|
||||
const { recallMessage } = getWeChatStoreMethods();
|
||||
const MessageId = message.friendMessageId || message.chatroomMessageId;
|
||||
recallMessage(MessageId);
|
||||
},
|
||||
|
||||
CmdVoiceToTextResult: message => {
|
||||
const { findMessageById, updateMessage } = getWeChatStoreMethods();
|
||||
const msg = findMessageById(
|
||||
message.friendMessageId || message.chatroomMessageId,
|
||||
);
|
||||
const content = JSON.parse(msg.content);
|
||||
if (msg) {
|
||||
const content = JSON.parse(msg.content);
|
||||
updateMessage(msg.id, {
|
||||
content: JSON.stringify({
|
||||
...content,
|
||||
|
||||
Reference in New Issue
Block a user