import React from 'react'; import classNames from 'classnames'; import { Avatar, AvatarSize } from './Avatar'; import { MessageBodyHighlight } from './MessageBodyHighlight'; import { Timestamp } from './conversation/Timestamp'; import { ContactName } from './conversation/ContactName'; import { DefaultTheme, withTheme } from 'styled-components'; export type MessageSearchResultProps = { id: string; conversationId: string; receivedAt: number; snippet: string; from: { phoneNumber: string; isMe?: boolean; name?: string; color?: string; profileName?: string; avatarPath?: string; }; to: { groupName?: string; phoneNumber: string; isMe?: boolean; name?: string; profileName?: string; }; }; type PropsHousekeeping = { isSelected?: boolean; theme: DefaultTheme; onClick: (conversationId: string, messageId?: string) => void; }; type Props = MessageSearchResultProps & PropsHousekeeping; class MessageSearchResultInner extends React.PureComponent { public renderFromName() { const { from, to } = this.props; if (from.isMe && to.isMe) { return ( {window.i18n('noteToSelf')} ); } if (from.isMe) { return ( {window.i18n('you')} ); } return ( ); } public renderFrom() { const { to } = this.props; const fromName = this.renderFromName(); if (!to.isMe) { return (
{fromName} {window.i18n('to')}{' '}
); } return
{fromName}
; } public renderAvatar() { const { from } = this.props; const userName = from.profileName || from.phoneNumber; return ( ); } public render() { const { from, id, isSelected, conversationId, onClick, receivedAt, snippet, to } = this.props; if (!from || !to) { return null; } return (
{ if (onClick) { onClick(conversationId, id); } }} className={classNames( 'module-message-search-result', isSelected ? 'module-message-search-result--is-selected' : null )} > {this.renderAvatar()}
{this.renderFrom()}
); } } export const MessageSearchResult = withTheme(MessageSearchResultInner);