You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			63 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			TypeScript
		
	
			
		
		
	
	
			63 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			TypeScript
		
	
| import styled from 'styled-components';
 | |
| import { PubKey } from '../../../../session/types';
 | |
| import {
 | |
|   useAuthorName,
 | |
|   useAuthorProfileName,
 | |
|   useFirstMessageOfSeries,
 | |
|   useHideAvatarInMsgList,
 | |
|   useMessageAuthor,
 | |
|   useMessageDirection,
 | |
| } from '../../../../state/selectors';
 | |
| import {
 | |
|   useSelectedIsGroupOrCommunity,
 | |
|   useSelectedIsPublic,
 | |
| } from '../../../../state/selectors/selectedConversation';
 | |
| import { Flex } from '../../../basic/Flex';
 | |
| import { ContactName } from '../../ContactName';
 | |
| 
 | |
| type Props = {
 | |
|   messageId: string;
 | |
| };
 | |
| 
 | |
| const StyledAuthorContainer = styled(Flex)<{ hideAvatar: boolean }>`
 | |
|   color: var(--text-primary-color);
 | |
|   text-overflow: ellipsis;
 | |
|   margin-inline-start: ${props => (props.hideAvatar ? 0 : 'var(--width-avatar-group-msg-list)')};
 | |
| `;
 | |
| 
 | |
| export const MessageAuthorText = (props: Props) => {
 | |
|   const isPublic = useSelectedIsPublic();
 | |
|   const isGroup = useSelectedIsGroupOrCommunity();
 | |
|   const authorProfileName = useAuthorProfileName(props.messageId);
 | |
|   const authorName = useAuthorName(props.messageId);
 | |
|   const sender = useMessageAuthor(props.messageId);
 | |
|   const direction = useMessageDirection(props.messageId);
 | |
|   const firstMessageOfSeries = useFirstMessageOfSeries(props.messageId);
 | |
|   const hideAvatar = useHideAvatarInMsgList(props.messageId);
 | |
| 
 | |
|   if (!props.messageId || !sender || !direction) {
 | |
|     return null;
 | |
|   }
 | |
| 
 | |
|   const title = authorName || sender;
 | |
| 
 | |
|   if (direction !== 'incoming' || !isGroup || !title || !firstMessageOfSeries) {
 | |
|     return null;
 | |
|   }
 | |
| 
 | |
|   const displayedPubkey = authorProfileName ? PubKey.shorten(sender) : sender;
 | |
| 
 | |
|   return (
 | |
|     <StyledAuthorContainer container={true} hideAvatar={hideAvatar}>
 | |
|       <ContactName
 | |
|         pubkey={displayedPubkey}
 | |
|         name={authorName}
 | |
|         profileName={authorProfileName}
 | |
|         module="module-message__author"
 | |
|         boldProfileName={true}
 | |
|         shouldShowPubkey={Boolean(isPublic)}
 | |
|       />
 | |
|     </StyledAuthorContainer>
 | |
|   );
 | |
| };
 |