import React, { FC, memo } from '../../../lib/teact/teact'; import { withGlobal } from '../../../lib/teact/teactn'; import { ApiChat, ApiUser } from '../../../api/types'; import useChatContextActions from '../../../hooks/useChatContextActions'; import useFlag from '../../../hooks/useFlag'; import { isChatPrivate, getPrivateChatUserId } from '../../../modules/helpers'; import { selectChat, selectUser, selectIsChatPinned } from '../../../modules/selectors'; import PrivateChatInfo from '../../common/PrivateChatInfo'; import GroupChatInfo from '../../common/GroupChatInfo'; import DeleteChatModal from '../../common/DeleteChatModal'; import ListItem from '../../ui/ListItem'; type OwnProps = { chatId: number; withUsername?: boolean; onClick: (id: number) => void; }; type StateProps = { chat?: ApiChat; privateChatUser?: ApiUser; isPinned?: boolean; }; const LeftSearchResultChat: FC = ({ chatId, chat, privateChatUser, isPinned, withUsername, onClick, }) => { const [isDeleteModalOpen, openDeleteModal, closeDeleteModal] = useFlag(); const contextActions = useChatContextActions({ chat, privateChatUser, isPinned, handleDelete: openDeleteModal, }); if (!chat) { return undefined; } return ( onClick(chatId)} contextActions={contextActions} > {isChatPrivate(chatId) ? ( ) : ( )} ); }; export default memo(withGlobal( (global, { chatId }): StateProps => { const chat = selectChat(global, chatId); const privateChatUserId = chat && getPrivateChatUserId(chat); const privateChatUser = privateChatUserId ? selectUser(global, privateChatUserId) : undefined; const isPinned = selectIsChatPinned(global, chatId); return { chat, privateChatUser, isPinned, }; }, )(LeftSearchResultChat));