feat(weChat): 优化聊天消息加载逻辑并移除无用按钮
添加 isLoadingData 状态控制滚动行为 修改 loadChatMessages 方法支持分页加载 移除聊天窗口的语音和视频通话按钮 更新构建产物文件引用
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user