// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See LICENSE.txt for license information. import React, {useMemo} from 'react'; import {useIntl} from 'react-intl'; import ProfilePicture from '@components/profile_picture'; import {displayUsername} from '@utils/user'; import BaseChip from './base_chip'; import type UserModel from '@typings/database/models/servers/user'; type SelectedChipProps = { user: UserModel | UserProfile; onPress?: (id: string) => void; testID?: string; teammateNameDisplay: string; action?: { icon: 'remove' | 'downArrow'; onPress?: (id: string) => void; }; showAnimation?: boolean; } export default function UserChip({ testID, user, teammateNameDisplay, onPress: receivedOnPress, action: receivedAction, showAnimation, }: SelectedChipProps) { const intl = useIntl(); const onPress = useMemo(() => { if (!receivedOnPress) { return undefined; } return () => receivedOnPress(user.id); }, [receivedOnPress, user.id]); const action = useMemo(() => { if (!receivedAction) { return undefined; } const onActionPress = receivedAction.onPress ? (() => receivedAction.onPress?.(user.id)) : undefined; return {icon: receivedAction.icon, onPress: onActionPress}; }, [receivedAction, user.id]); const name = displayUsername(user, intl.locale, teammateNameDisplay); const picture = useMemo(() => ( ), [testID, user]); return ( ); }