feat(weChat): 添加联系人存在检查逻辑并优化消息处理
在setCurrentContact方法中添加isExist参数,用于区分新增联系人和已存在联系人的处理逻辑 优化消息处理流程,确保未读消息计数正确更新
This commit is contained in:
@@ -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}>
|
||||
|
||||
@@ -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>;
|
||||
|
||||
// 视频消息处理方法
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
|
||||
Reference in New Issue
Block a user