content: import React from 'react';
  import PropTypes from 'prop-types';
  import { connect } from 'react-redux';
  import { makeGetAccount } from '../../../selectors';
  import ImmutablePureComponent from 'react-immutable-pure-component';
  import ImmutablePropTypes from 'react-immutable-proptypes';
  import Avatar from '../../../components/avatar';
  import DisplayName from '../../../components/display_name';
  import IconButton from '../../../components/icon_button';
  import { defineMessages, injectIntl } from 'react-intl';
  import { removeFromListEditor, addToListEditor } from '../../../actions/lists';
  
  const messages = defineMessages({
    remove: { id: 'lists.account.remove', defaultMessage: 'Remove from list' },
    add: { id: 'lists.account.add', defaultMessage: 'Add to list' },
  });
  
  const makeMapStateToProps = () => {
    const getAccount = makeGetAccount();
  
    const mapStateToProps = (state, { accountId, added }) => ({
      account: getAccount(state, accountId),
      added: typeof added === 'undefined' ? state.getIn(['listEditor', 'accounts', 'items']).includes(accountId) : added,
    });
  
    return mapStateToProps;
  };
  
  const mapDispatchToProps = (dispatch, { accountId }) => ({
    onRemove: () => dispatch(removeFromListEditor(accountId)),
    onAdd: () => dispatch(addToListEditor(accountId)),
  });
  
  @connect(makeMapStateToProps, mapDispatchToProps)
  @injectIntl
  export default class Account extends ImmutablePureComponent {
  
    static propTypes = {
      account: ImmutablePropTypes.map.isRequired,
      intl: PropTypes.object.isRequired,
      onRemove: PropTypes.func.isRequired,
      onAdd: PropTypes.func.isRequired,
      added: PropTypes.bool,
    };
  
    static defaultProps = {
      added: false,
    };
  
    render () {
      const { account, intl, onRemove, onAdd, added } = this.props;
  
      let button;
  
      if (added) {
        button = <IconButton icon='times' title={intl.formatMessage(messages.remove)} onClick={onRemove} />;
      } else {
        button = <IconButton icon='plus' title={intl.formatMessage(messages.add)} onClick={onAdd} />;
      }
  
      return (
        <div className='account'>
          <div className='account__wrapper'>
            <div className='account__display-name'>
              <div className='account__avatar-wrapper'><Avatar account={account} size={36} /></div>
              <DisplayName account={account} />
            </div>
  
            <div className='account__relationship'>
              {button}
            </div>
          </div>
        </div>
      );
    }
  
  }
  