import { ViewStyle, TextStyle, ImageStyle } from 'react-native'; export interface ChatSession { /** 会话ID */ id: string; /** 会话名称/对方名称 */ name: string; /** 头像URL */ avatar?: string; /** 最后一条消息内容 */ lastMessage: string; /** 最后消息时间 */ timestamp: Date | string | number; /** 未读消息数 */ unreadCount?: number; /** 是否置顶 */ isPinned?: boolean; /** 是否静音 */ isMuted?: boolean; /** 是否在线 */ isOnline?: boolean; /** 自定义数据 */ extra?: any; } export interface DbChatListProps { /** 会话列表数据 */ data: ChatSession[]; /** 当前选中的会话ID */ activeId?: string; /** 点击会话项回调 */ onPressItem?: (session: ChatSession, index: number) => void; /** 长按会话项回调 */ onLongPressItem?: (session: ChatSession, index: number) => void; /** 删除会话回调 */ onDeleteItem?: (session: ChatSession, index: number) => void; /** 置顶切换回调 */ onPinToggle?: (session: ChatSession, index: number) => void; /** 自定义渲染头像 */ renderAvatar?: (session: ChatSession, index: number) => React.ReactNode; /** 自定义渲染消息内容 */ renderMessage?: (session: ChatSession, index: number) => React.ReactNode; /** 自定义渲染时间 */ renderTime?: (session: ChatSession, index: number) => React.ReactNode; /** 自定义渲染未读徽章 */ renderBadge?: (count: number, session: ChatSession) => React.ReactNode; /** 是否显示搜索栏 */ showSearch?: boolean; /** 搜索占位符 */ searchPlaceholder?: string; /** 搜索回调 */ onSearch?: (keyword: string) => void; /** 是否加载中 */ loading?: boolean; /** 是否可刷新 */ refreshable?: boolean; /** 刷新回调 */ onRefresh?: () => void; /** 列表为空时显示 */ emptyComponent?: React.ReactNode; /** 列表底部组件 */ footerComponent?: React.ReactNode; /** 自定义样式 */ style?: ViewStyle; /** 列表项样式 */ itemStyle?: ViewStyle; /** 头像样式 */ avatarStyle?: ImageStyle; /** 名称文本样式 */ nameTextStyle?: TextStyle; /** 消息文本样式 */ messageTextStyle?: TextStyle; /** 时间文本样式 */ timeTextStyle?: TextStyle; } export interface ChatListItemProps extends ChatSession { /** 是否选中 */ isActive?: boolean; /** 是否显示分割线 */ showDivider?: boolean; /** 点击回调 */ onPress?: () => void; /** 长按回调 */ onLongPress?: () => void; /** 自定义渲染头像 */ renderAvatar?: () => React.ReactNode; /** 自定义渲染消息内容 */ renderMessage?: () => React.ReactNode; /** 自定义渲染时间 */ renderTime?: () => React.ReactNode; /** 自定义渲染未读徽章 */ renderBadge?: (count: number) => React.ReactNode; /** 样式 */ style?: ViewStyle; avatarStyle?: ImageStyle; nameTextStyle?: TextStyle; messageTextStyle?: TextStyle; timeTextStyle?: TextStyle; }