import * as React from 'react'; import { Text, View } from 'react-native'; import { getParticipantById, getParticipantDisplayName } from '../../../base/participants/functions'; import { connect } from '../../../base/redux/functions'; // @ts-ignore import styles from './styles'; type Props = { /** * The name of the participant to render. */ _participantName: string; /** * True of the label needs to be rendered. False otherwise. */ _render: boolean; /** * Whether or not the name is in a container. */ contained?: boolean; /** * The ID of the participant to render the label for. */ participantId: string; } /** * Renders a label with the display name of the on-stage participant. */ class DisplayNameLabel extends React.Component { /** * Implements {@code Component#render}. * * @inheritdoc */ render() { if (!this.props._render) { return null; } return ( { this.props._participantName } ); } } /** * Maps part of the Redux state to the props of this component. * * @param {any} state - The Redux state. * @param {Props} ownProps - The own props of the component. * @returns {Props} */ function _mapStateToProps(state: any, ownProps: any) { const participant = getParticipantById(state, ownProps.participantId); return { _participantName: getParticipantDisplayName(state, ownProps.participantId), _render: participant && (!participant?.local || ownProps.contained) && !participant?.isFakeParticipant }; } export default connect(_mapStateToProps)(DisplayNameLabel);