新增消息序列号支持,优化消息发送和接收逻辑,更新消息状态处理,提升代码可读性和用户体验。
This commit is contained in:
@@ -101,4 +101,6 @@ export interface WeChatState {
|
||||
// ==================== 消息接收处理 ====================
|
||||
/** 接收新消息处理 */
|
||||
receivedMsg: (message: ChatRecord) => void;
|
||||
/** 查找消息 */
|
||||
findMessageBySeq: (seq: number) => ChatRecord | undefined;
|
||||
}
|
||||
|
||||
@@ -84,6 +84,9 @@ export const useWeChatStore = create<WeChatState>()(
|
||||
}
|
||||
}
|
||||
},
|
||||
findMessageBySeq: (seq: number) => {
|
||||
return get().currentMessages.find(msg => msg.seq === seq);
|
||||
},
|
||||
/** 更新指定消息内容 */
|
||||
updateMessage: (messageId, updates) => {
|
||||
set(state => ({
|
||||
|
||||
@@ -11,6 +11,8 @@ 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 updateMessage = useWeChatStore.getState().updateMessage;
|
||||
const updateMomentCommonLoading =
|
||||
useWeChatStore.getState().updateMomentCommonLoading;
|
||||
const addMomentCommon = useWeChatStore.getState().addMomentCommon;
|
||||
@@ -41,13 +43,18 @@ const messageHandlers: Record<string, MessageHandler> = {
|
||||
},
|
||||
// 发送消息响应
|
||||
CmdSendMessageResp: message => {
|
||||
console.log("发送消息响应", message);
|
||||
addMessage(message.friendMessage || message.chatroomMessage);
|
||||
// 在这里添加具体的处理逻辑
|
||||
const msg = findMessageBySeq(message.seq);
|
||||
if (msg) {
|
||||
updateMessage(message.seq, {
|
||||
sendStatus: 1,
|
||||
id: message.friendMessage?.id || message.chatroomMessage?.id,
|
||||
});
|
||||
}
|
||||
},
|
||||
CmdSendMessageResult: message => {
|
||||
console.log("发送消息结果", message);
|
||||
// 在这里添加具体的处理逻辑
|
||||
updateMessage(message.friendMessageId, {
|
||||
sendStatus: 0,
|
||||
});
|
||||
},
|
||||
// 接收消息响应
|
||||
CmdReceiveMessageResp: message => {
|
||||
|
||||
Reference in New Issue
Block a user