import React from 'react'; import classNames from 'classnames'; import moment from 'moment'; import { Message } from './Message'; import { useSelector } from 'react-redux'; import { Avatar, AvatarSize } from '../../../avatar/Avatar'; import { deleteMessagesById } from '../../../../interactions/conversations/unsendingInteractions'; import { ContactPropsMessageDetail } from '../../../../state/ducks/conversations'; import { getMessageDetailsViewProps, getMessageIsDeletable, } from '../../../../state/selectors/conversations'; import { ContactName } from '../../ContactName'; const AvatarItem = (props: { pubkey: string }) => { const { pubkey } = props; return ; }; const DeleteButtonItem = (props: { messageId: string; convoId: string; isDeletable: boolean }) => { const { i18n } = window; return props.isDeletable ? (
) : null; }; const ContactsItem = (props: { contacts: Array }) => { const { contacts } = props; if (!contacts || !contacts.length) { return null; } return (
{contacts.map(contact => ( ))}
); }; const ContactItem = (props: { contact: ContactPropsMessageDetail }) => { const { contact } = props; const errors = contact.errors || []; const statusComponent = !contact.isOutgoingKeyError ? (
) : null; return (
{errors.map((error, index) => (
{error.message}
))}
{statusComponent}
); }; export const MessageDetail = () => { const { i18n } = window; const messageDetailProps = useSelector(getMessageDetailsViewProps); const isDeletable = useSelector(state => getMessageIsDeletable(state as any, messageDetailProps?.messageId || '') ); if (!messageDetailProps) { return null; } const { errors, receivedAt, sentAt, convoId, direction, messageId } = messageDetailProps; return (
{(errors || []).map((error, index) => ( ))} {receivedAt ? ( ) : null}
{i18n('error')} {' '} {error.message}{' '}
{i18n('sent')} {moment(sentAt).format('LLLL')} ({sentAt})
{i18n('received')} {moment(receivedAt).format('LLLL')} ({receivedAt})
{direction === 'incoming' ? i18n('from') : i18n('to')}
); };