import type React from 'react'; import type { ContactInfo, GroupInfo, FriendApplicationInfo, GroupApplicationInfo } from 'tuikit-atomicx-react/chat'; import { ContactItemType } from '../../../types/contact'; import { BlacklistItem } from './BlacklistItem/BlacklistItem'; import { FriendApplicationItem } from './FriendApplicationItem/FriendApplicationItem'; import { FriendItem } from './FriendItem/FriendItem'; import { GroupApplicationItem } from './GroupApplicationItem/GroupApplicationItem'; import { GroupItem } from './GroupItem/GroupItem'; import type { ContactListItemProps, } from '../../../types/contact'; export const ContactListItem: React.FC = ({ contactItem, activeContactItem, onClick, onFriendApplicationAction, onGroupApplicationAction, className, style, }) => { const { type, data: item } = contactItem; const { type: activeType, data: activeItem } = activeContactItem || { type: null, data: null }; switch (type) { case ContactItemType.FRIEND: return ( onClick(ContactItemType.FRIEND, friend) })} {...(className && { className })} {...(style && { style })} /> ); case ContactItemType.GROUP: return ( onClick(ContactItemType.GROUP, group), })} {...(className && { className })} {...(style && { style })} /> ); case ContactItemType.BLACK: return ( onClick(ContactItemType.BLACK, profile), })} {...(className && { className })} {...(style && { style })} /> ); case ContactItemType.FRIEND_REQUEST: return ( onClick(ContactItemType.FRIEND_REQUEST, application), })} {...(onFriendApplicationAction && { onAction: onFriendApplicationAction })} {...(className && { className })} {...(style && { style })} /> ); case ContactItemType.GROUP_REQUEST: return ( onClick(ContactItemType.GROUP_REQUEST, application), })} {...(onGroupApplicationAction && { onAction: onGroupApplicationAction })} {...(className && { className })} {...(style && { style })} /> ); default: console.warn(`Unknown contact type: ${type}`); return null; } }; export default ContactListItem;