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

View File

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

View File

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

View File

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

View File

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