refactor(ckbox): 移除SidebarMenu的currentContract属性并优化状态管理

- 移除不再使用的currentContract属性和相关props传递
- 将chatSessions状态管理移至MessageList组件内部
- 添加CmdFriendInfoChanged消息处理器
- 添加调试日志用于会话更新
This commit is contained in:
超级老白兔
2025-09-03 17:55:25 +08:00
parent 533c16be3f
commit 7e5617bd80
5 changed files with 15 additions and 15 deletions

View File

@@ -3,22 +3,22 @@ import { List, Avatar, Badge } from "antd";
import { UserOutlined, TeamOutlined } from "@ant-design/icons";
import { ContractData, weChatGroup } from "@/pages/pc/ckbox/data";
import { useWeChatStore } from "@/store/module/weChat/weChat";
import { useCkChatStore } from "@/store/module/ckchat/ckchat";
import styles from "./MessageList.module.scss";
import { formatWechatTime } from "@/utils/common";
interface MessageListProps {
chatSessions: ContractData[] | weChatGroup[];
}
interface MessageListProps {}
const MessageList: React.FC<MessageListProps> = ({ chatSessions }) => {
const MessageList: React.FC<MessageListProps> = () => {
const { setCurrentContact, currentContract } = useWeChatStore();
const chatSessions = useCkChatStore(state => state.getChatSessions());
const onContactClick = (session: ContractData | weChatGroup) => {
setCurrentContact(session);
};
return (
<div className={styles.messageList}>
<List
dataSource={chatSessions as ContractData[]}
dataSource={chatSessions as (ContractData | weChatGroup)[]}
renderItem={session => (
<List.Item
key={session.id}

View File

@@ -10,17 +10,11 @@ import WechatFriends from "./WechatFriends";
import MessageList from "./MessageList/index";
import styles from "./SidebarMenu.module.scss";
import { useCkChatStore } from "@/store/module/ckchat/ckchat";
import { ContractData, weChatGroup } from "@/pages/pc/ckbox/data";
interface SidebarMenuProps {
loading?: boolean;
currentContract?: ContractData | weChatGroup;
}
const SidebarMenu: React.FC<SidebarMenuProps> = ({
loading = false,
currentContract,
}) => {
const chatSessions = useCkChatStore(state => state.getChatSessions());
const SidebarMenu: React.FC<SidebarMenuProps> = ({ loading = false }) => {
const searchKeyword = useCkChatStore(state => state.searchKeyword);
const setSearchKeyword = useCkChatStore(state => state.setSearchKeyword);
const clearSearchKeyword = useCkChatStore(state => state.clearSearchKeyword);
@@ -128,7 +122,7 @@ const SidebarMenu: React.FC<SidebarMenuProps> = ({
const renderContent = () => {
switch (activeTab) {
case "chats":
return <MessageList chatSessions={chatSessions} />;
return <MessageList />;
case "contracts":
return <WechatFriends />;
case "groups":

View File

@@ -64,7 +64,7 @@ const CkboxPage: React.FC = () => {
{/* 左侧联系人边栏 */}
<Sider width={280} className={styles.sider}>
<SidebarMenu currentContract={currentContract} loading={loading} />
<SidebarMenu loading={loading} />
</Sider>
{/* 主内容区 */}

View File

@@ -389,6 +389,7 @@ export const useCkChatStore = createPersistStore<CkChatState>(
const newSession = state.chatSessions.map(item =>
item.id === session.id ? session : item,
);
console.log("新数组", newSession);
set({ chatSessions: newSession });
},
// 删除聊天会话

View File

@@ -46,6 +46,10 @@ const messageHandlers: Record<string, MessageHandler> = {
// 在这里添加具体的处理逻辑
receivedMsg(message.friendMessage);
},
CmdFriendInfoChanged: message => {
// console.log("好友信息变更", message);
// 在这里添加具体的处理逻辑
},
// 登录响应
CmdSignInResp: message => {
@@ -67,6 +71,7 @@ const messageHandlers: Record<string, MessageHandler> = {
// 在这里添加具体的处理逻辑
setVideoUrl(message.friendMessageId, message.url);
},
// 可以继续添加更多处理器...
};