import React, { useCallback } from 'react'; import { Flex } from '../../basic/Flex'; import { SessionIcon, SessionIconButton } from '../icon'; import styled from 'styled-components'; import { getAlt, isAudio } from '../../../types/Attachment'; import { Image } from '../../conversation/Image'; import { AUDIO_MP3 } from '../../../types/MIME'; import { useDispatch, useSelector } from 'react-redux'; import { getQuotedMessage } from '../../../state/selectors/conversations'; import { quoteMessage } from '../../../state/ducks/conversations'; const QuotedMessageComposition = styled.div` width: 100%; padding-inline-end: var(--margins-md); padding-inline-start: var(--margins-md); `; const QuotedMessageCompositionReply = styled.div` background: var(--color-quote-bottom-bar-background); border-radius: var(--margins-sm); padding: var(--margins-xs); box-shadow: var(--color-session-shadow); margin: var(--margins-xs); `; const Subtle = styled.div` overflow: hidden; text-overflow: ellipsis; word-break: break-all; -webkit-line-clamp: 3; -webkit-box-orient: vertical; display: -webkit-box; color: var(--color-text); `; const ReplyingTo = styled.div` color: var(--color-text); `; export const SessionQuotedMessageComposition = () => { const quotedMessageProps = useSelector(getQuotedMessage); const dispatch = useDispatch(); const { text: body, attachments } = quotedMessageProps || {}; const hasAttachments = attachments && attachments.length > 0; let hasImageAttachment = false; let firstImageAttachment; // we have to handle the case we are trying to reply to an audio message if (attachments?.length && attachments[0].contentType !== AUDIO_MP3 && attachments[0].thumbnail) { firstImageAttachment = attachments[0]; hasImageAttachment = true; } const hasAudioAttachment = hasAttachments && attachments && attachments.length > 0 && isAudio(attachments); const removeQuotedMessage = useCallback(() => { dispatch(quoteMessage(undefined)); }, []); if (!quotedMessageProps?.id) { return null; } return ( {window.i18n('replyingToMessage')} {(hasAttachments && window.i18n('mediaMessage')) || body} {hasImageAttachment && ( {getAlt(firstImageAttachment)} )} {hasAudioAttachment && } ); };