import React, { FC, memo } from '../../lib/teact/teact'; import { withGlobal } from '../../global'; import { ApiChat, ApiUser } from '../../api/types'; import { selectChat, selectUser } from '../../global/selectors'; import { getChatTitle, getUserFirstOrLastName, isUserId } from '../../global/helpers'; import renderText from './helpers/renderText'; import buildClassName from '../../util/buildClassName'; import useLang from '../../hooks/useLang'; import Avatar from './Avatar'; import './PickerSelectedItem.scss'; type OwnProps = { chatOrUserId?: string; icon?: string; title?: string; isMinimized?: boolean; canClose?: boolean; onClick: (arg: any) => void; clickArg: any; className?: string; }; type StateProps = { chat?: ApiChat; user?: ApiUser; }; const PickerSelectedItem: FC = ({ icon, title, isMinimized, canClose, onClick, clickArg, chat, user, className, }) => { const lang = useLang(); let iconElement: any; let titleText: any; if (icon && title) { iconElement = (
); titleText = title; } else if (chat || user) { iconElement = ( ); const name = !chat || (user && !user.isSelf) ? getUserFirstOrLastName(user) : getChatTitle(lang, chat, user); titleText = name ? renderText(name) : undefined; } const fullClassName = buildClassName( 'PickerSelectedItem', className, isMinimized && 'minimized', canClose && 'closeable', ); return (
onClick(clickArg)} title={isMinimized ? titleText : undefined} dir={lang.isRtl ? 'rtl' : undefined} > {iconElement} {!isMinimized && (
{titleText}
)} {canClose && (
)}
); }; export default memo(withGlobal( (global, { chatOrUserId }): StateProps => { if (!chatOrUserId) { return {}; } const chat = chatOrUserId ? selectChat(global, chatOrUserId) : undefined; const user = isUserId(chatOrUserId) ? selectUser(global, chatOrUserId) : undefined; return { chat, user, }; }, )(PickerSelectedItem));