Files
cunkebao_v3/Cunkebao/src/pages/pc/ckbox/components/SidebarMenu/WechatFriendsModule.tsx
超级老白兔 812cb97713 refactor(ckbox): 统一联系人数据结构并简化聊天会话处理
- 将ContactData接口添加索引签名以支持动态属性
- 移除ChatSession接口,直接使用ContactData作为聊天会话类型
- 简化组件间数据传递和状态管理
- 更新相关组件props类型定义
2025-08-22 15:17:47 +08:00

49 lines
1.4 KiB
TypeScript

import React from "react";
import { List, Avatar, Badge } from "antd";
import { ContactData } from "./data";
import styles from "./ContactListSimple.module.scss";
interface ContactListSimpleProps {
contacts: ContactData[];
onContactClick: (contact: ContactData) => void;
selectedContactId?: ContactData;
}
const ContactListSimple: React.FC<ContactListSimpleProps> = ({
contacts,
onContactClick,
selectedContactId,
}) => {
return (
<div className={styles.contactListSimple}>
<div className={styles.header}></div>
<List
className={styles.list}
dataSource={contacts}
renderItem={contact => (
<List.Item
key={contact.id}
onClick={() => onContactClick(contact)}
className={`${styles.contactItem} ${contact.id === selectedContactId?.id ? styles.selected : ""}`}
>
<div className={styles.avatarContainer}>
<Avatar
src={contact.avatar}
icon={
!contact.avatar && <span>{contact.nickname.charAt(0)}</span>
}
className={styles.avatar}
/>
</div>
<div className={styles.contactInfo}>
<div className={styles.name}>{contact.nickname}</div>
</div>
</List.Item>
)}
/>
</div>
);
};
export default ContactListSimple;