import React from 'react'; import { ContactName } from '../../../ContactName'; import { PubKey } from '../../../../../session/types'; import styled from 'styled-components'; import { QuoteProps } from './Quote'; import { useQuoteAuthorName } from '../../../../../hooks/useParamSelector'; import { useSelector } from 'react-redux'; import { isPublicGroupConversation } from '../../../../../state/selectors/conversations'; const StyledQuoteAuthor = styled.div<{ isIncoming: boolean }>` color: ${props => props.isIncoming ? 'var(--message-bubbles-received-text-color)' : 'var(--message-bubbles-sent-text-color)'}; font-size: var(--font-size-md); font-weight: bold; line-height: 18px; margin-bottom: 2px; overflow-x: hidden; white-space: nowrap; text-overflow: ellipsis; .module-contact-name { font-weight: bold; } `; type QuoteAuthorProps = Pick<QuoteProps, 'author' | 'isIncoming'>; export const QuoteAuthor = (props: QuoteAuthorProps) => { const { author, isIncoming } = props; const isPublic = useSelector(isPublicGroupConversation); const authorName = useQuoteAuthorName(author); if (!author || !authorName) { return null; } return ( <StyledQuoteAuthor isIncoming={isIncoming}> <ContactName pubkey={PubKey.shorten(author)} name={authorName} compact={true} shouldShowPubkey={Boolean(authorName && isPublic)} /> </StyledQuoteAuthor> ); };