import React, { useContext } from 'react'; import { TouchableOpacity, Text } from 'react-native'; import PropTypes from 'prop-types'; 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 } from '../constants'; import { themes } from '../../../constants/colors'; const MentionItem = ({ item, trackingType, theme }) => { const context = useContext(MessageboxContext); const { onPressMention } = context; const defineTestID = (type) => { switch (type) { case MENTIONS_TRACKING_TYPE_EMOJIS: return `mention-item-${ item.name || item }`; case MENTIONS_TRACKING_TYPE_COMMANDS: return `mention-item-${ item.command || 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} ); } return ( onPressMention(item)} testID={testID} > {content} ); }; MentionItem.propTypes = { item: PropTypes.object, trackingType: PropTypes.string, theme: PropTypes.string }; export default MentionItem;