feat(weChat): 优化聊天消息加载逻辑并移除无用按钮

添加 isLoadingData 状态控制滚动行为
修改 loadChatMessages 方法支持分页加载
移除聊天窗口的语音和视频通话按钮
更新构建产物文件引用
This commit is contained in:
超级老白兔
2025-09-08 09:45:10 +08:00
parent b2db8e8f5a
commit 2033faff08
6 changed files with 56 additions and 43 deletions

View File

@@ -9,6 +9,7 @@ export interface WeChatState {
// 消息加载状态
messagesLoading: boolean;
isLoadingData: boolean;
currentGroupMembers: any[];
// Actions
@@ -16,7 +17,7 @@ export interface WeChatState {
contract: ContractData | weChatGroup,
isExist?: boolean,
) => void;
loadChatMessages: (contact: ContractData | weChatGroup) => Promise<void>;
loadChatMessages: (Init: boolean, To?: number) => Promise<void>;
// 视频消息处理方法
setVideoLoading: (messageId: number, isLoading: boolean) => void;

View File

@@ -22,6 +22,7 @@ export const useWeChatStore = create<WeChatState>()(
currentContract: null,
currentMessages: [],
messagesLoading: false,
isLoadingData: false,
currentGroupMembers: [],
// Actions
@@ -43,18 +44,19 @@ export const useWeChatStore = create<WeChatState>()(
id: contract.id,
config: { chat: true },
});
state.loadChatMessages(contract);
state.loadChatMessages(true, 4704624000000);
});
},
loadChatMessages: async contact => {
loadChatMessages: async (Init: boolean, To?: number) => {
const state = useWeChatStore.getState();
const contact = state.currentContract;
set({ messagesLoading: true });
set({ isLoadingData: Init });
try {
const params: any = {
wechatAccountId: contact.wechatAccountId,
From: 1,
To: 4704624000000,
To: To || +new Date(),
Count: 5,
olderData: true,
};
@@ -65,11 +67,29 @@ export const useWeChatStore = create<WeChatState>()(
const currentGroupMembers = await getGroupMembers({
id: contact.id,
});
set({ currentMessages: messages || [], currentGroupMembers });
if (Init) {
set({ currentMessages: messages || [], currentGroupMembers });
} else {
set({
currentMessages: [
...state.currentMessages,
...(messages || []),
],
});
}
} else {
params.wechatFriendId = contact.id;
const messages = await getChatMessages(params);
set({ currentMessages: messages || [] });
if (Init) {
set({ currentMessages: messages || [] });
} else {
set({
currentMessages: [
...state.currentMessages,
...(messages || []),
],
});
}
}
} catch (error) {
console.error("获取聊天消息失败:", error);