import React, { useContext } from 'react'; import { Text, TouchableOpacity } from 'react-native'; import styles from '../styles'; import Avatar from '../../Avatar'; import MessageboxContext from '../Context'; import FixedMentionItem from './FixedMentionItem'; import MentionEmoji from './MentionEmoji'; import { MENTIONS_TRACKING_TYPE_EMOJIS, MENTIONS_TRACKING_TYPE_COMMANDS, MENTIONS_TRACKING_TYPE_CANNED } from '../constants'; import { themes } from '../../../constants/colors'; import { IEmoji } from '../../../definitions/IEmoji'; interface IMessageBoxMentionItem { item: { name: string; command: string; username: string; t: string; id: string; shortcut: string; text: string; } & IEmoji; trackingType: string; theme: string; } const MentionItem = ({ item, trackingType, theme }: IMessageBoxMentionItem) => { const context = useContext(MessageboxContext); const { onPressMention } = context; const defineTestID = (type: string) => { switch (type) { case MENTIONS_TRACKING_TYPE_EMOJIS: return `mention-item-${item.name || item}`; case MENTIONS_TRACKING_TYPE_COMMANDS: return `mention-item-${item.command || item}`; case MENTIONS_TRACKING_TYPE_CANNED: return `mention-item-${item.shortcut || item}`; default: return `mention-item-${item.username || item.name || item}`; } }; const testID = defineTestID(trackingType); if (item.username === 'all' || item.username === 'here') { return ; } let content = ( <> {item.username || item.name || item} ); if (trackingType === MENTIONS_TRACKING_TYPE_EMOJIS) { content = ( <> :{item.name || item}: ); } if (trackingType === MENTIONS_TRACKING_TYPE_COMMANDS) { content = ( <> / {item.id} ); } if (trackingType === MENTIONS_TRACKING_TYPE_CANNED) { content = ( <> !{item.shortcut} {item.text} ); } return ( onPressMention(item)} testID={testID}> {content} ); }; export default MentionItem;