feat(weChat): 添加联系人存在检查逻辑并优化消息处理

在setCurrentContact方法中添加isExist参数,用于区分新增联系人和已存在联系人的处理逻辑
优化消息处理流程,确保未读消息计数正确更新
This commit is contained in:
超级老白兔
2025-09-03 18:33:05 +08:00
parent 7bd7bd3564
commit df0bbddbd5
3 changed files with 20 additions and 8 deletions

View File

@@ -13,7 +13,7 @@ const MessageList: React.FC<MessageListProps> = () => {
const { setCurrentContact, currentContract } = useWeChatStore();
const chatSessions = useCkChatStore(state => state.chatSessions);
const onContactClick = (session: ContractData | weChatGroup) => {
setCurrentContact(session);
setCurrentContact(session, true);
};
return (
<div className={styles.messageList}>

View File

@@ -11,7 +11,10 @@ export interface WeChatState {
messagesLoading: boolean;
// Actions
setCurrentContact: (contract: ContractData | weChatGroup) => void;
setCurrentContact: (
contract: ContractData | weChatGroup,
isExist?: boolean,
) => void;
loadChatMessages: (contact: ContractData | weChatGroup) => Promise<void>;
// 视频消息处理方法

View File

@@ -6,8 +6,8 @@ import { clearUnreadCount, updateConfig } from "@/pages/pc/ckbox/api";
import { ContractData, weChatGroup } from "@/pages/pc/ckbox/data";
import {
addChatSession,
getChatSessions,
updateChatSession,
useCkChatStore,
} from "@/store/module/ckchat/ckchat";
export const useWeChatStore = create<WeChatState>()(
@@ -19,12 +19,19 @@ export const useWeChatStore = create<WeChatState>()(
messagesLoading: false,
// Actions
setCurrentContact: (contract: ContractData | weChatGroup) => {
setCurrentContact: (
contract: ContractData | weChatGroup,
isExist?: boolean,
) => {
const state = useWeChatStore.getState();
// 切换联系人时清空当前消息,等待重新加载
set({ currentMessages: [] });
clearUnreadCount([contract.id]).then(() => {
addChatSession(contract);
if (isExist) {
updateChatSession({ ...contract, unreadCount: 0 });
} else {
addChatSession(contract);
}
set({ currentContract: contract });
updateConfig({
id: contract.id,
@@ -83,12 +90,14 @@ export const useWeChatStore = create<WeChatState>()(
}));
} else {
//更新消息列表unread数值根据接收的++1 这样
const chatSessions = getChatSessions();
const chatSessions = useCkChatStore.getState().chatSessions;
const session = chatSessions.find(
item => item.id == message.wechatFriendId,
);
session.unreadCount = Number(session.unreadCount) + 1;
updateChatSession(session);
if (session) {
session.unreadCount = Number(session.unreadCount) + 1;
updateChatSession(session);
}
}
},