import type { ILivechatContact, Serialized } from '@rocket.chat/core-typings'; import { Box, Button, ButtonGroup, Callout, IconButton, Tabs, TabsItem } from '@rocket.chat/fuselage'; import { UserAvatar } from '@rocket.chat/ui-avatar'; import { ContextualbarHeader, ContextualbarIcon, ContextualbarTitle, ContextualbarClose, ContextualbarDialog, } from '@rocket.chat/ui-client'; import { usePermission, useRouteParameter, useSetModal } from '@rocket.chat/ui-contexts'; import { useTranslation } from 'react-i18next'; import ReviewContactModal from './ReviewContactModal'; import { useFormatDate } from '../../../../hooks/useFormatDate'; import { useContactRoute } from '../../hooks/useContactRoute'; import { useValidCustomFields } from '../hooks/useValidCustomFields'; import ContactInfoChannels from '../tabs/ContactInfoChannels'; import ContactInfoDetails from '../tabs/ContactInfoDetails'; import ContactInfoHistory from '../tabs/ContactInfoHistory'; export type ContactInfoProps = { contact: Serialized; onClose: () => void; }; const ContactInfo = ({ contact, onClose }: ContactInfoProps) => { const { t } = useTranslation(); const setModal = useSetModal(); const handleNavigate = useContactRoute(); const context = useRouteParameter('context'); const formatDate = useFormatDate(); const canEditContact = usePermission('edit-omnichannel-contact'); const { name, emails, phones, conflictingFields, createdAt, lastChat, contactManager, customFields: userCustomFields } = contact; const hasConflicts = conflictingFields && conflictingFields?.length > 0; const customFieldEntries = useValidCustomFields(userCustomFields, 'visitor'); return ( {t('Contact')} {name && ( {name} {lastChat && {`${t('Last_Chat')}: ${formatDate(lastChat.ts)}`}} handleNavigate({ context: 'edit' })} /> )} {hasConflicts && ( } title={t('Conflicts_found', { conflicts: conflictingFields?.length })} /> )} handleNavigate({ context: 'details' })} selected={context === 'details'}> {t('Details')} handleNavigate({ context: 'channels' })} selected={context === 'channels'}> {t('Channels')} handleNavigate({ context: 'history' })} selected={context === 'history'}> {t('History')} {context === 'details' && ( phoneNumber)} emails={emails?.map(({ address }) => address)} customFieldEntries={customFieldEntries} /> )} {context === 'channels' && } {context === 'history' && } ); }; export default ContactInfo;