refactor(ckbox): 移除SidebarMenu的currentContract属性并优化状态管理
- 移除不再使用的currentContract属性和相关props传递 - 将chatSessions状态管理移至MessageList组件内部 - 添加CmdFriendInfoChanged消息处理器 - 添加调试日志用于会话更新
This commit is contained in:
@@ -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}
|
||||||
|
|||||||
@@ -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":
|
||||||
|
|||||||
@@ -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>
|
||||||
|
|
||||||
{/* 主内容区 */}
|
{/* 主内容区 */}
|
||||||
|
|||||||
@@ -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 });
|
||||||
},
|
},
|
||||||
// 删除聊天会话
|
// 删除聊天会话
|
||||||
|
|||||||
@@ -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);
|
||||||
},
|
},
|
||||||
|
|
||||||
// 可以继续添加更多处理器...
|
// 可以继续添加更多处理器...
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user