/* globals interfaceConfig */ import PropTypes from 'prop-types'; import React, { Component } from 'react'; import { connect } from 'react-redux'; import { Avatar, getAvatarURL, getLocalParticipant } from '../../base/participants'; /** * A React {@code Component} for displaying a link with a profile avatar as an * icon. * * @extends Component */ class OverflowMenuProfileItem extends Component { /** * {@code OverflowMenuProfileItem}'s property types. * * @static */ static propTypes = { /** * The redux representation of the local participant. */ _localParticipant: PropTypes.object, /** * Whether the button support clicking or not. */ _unclickable: PropTypes.bool, /** * The callback to invoke when {@code OverflowMenuProfileItem} is * clicked. */ onClick: PropTypes.func }; /** * Initializes a new {@code OverflowMenuProfileItem} instance. * * @param {Object} props - The read-only properties with which the new * instance is to be initialized. */ constructor(props) { super(props); // Bind event handler so it is only bound once for every instance. this._onClick = this._onClick.bind(this); } /** * Implements React's {@link Component#render()}. * * @inheritdoc * @returns {ReactElement} */ render() { const { _localParticipant, _unclickable } = this.props; const classNames = `overflow-menu-item ${ _unclickable ? 'unclickable' : ''}`; const avatarURL = getAvatarURL(_localParticipant); let displayName; if (_localParticipant && _localParticipant.name) { displayName = _localParticipant.name.split(' ')[0]; } else { displayName = interfaceConfig.DEFAULT_LOCAL_DISPLAY_NAME; } return (