import React from 'react' import PropTypes from 'prop-types' import { connect } from 'react-redux' import ImmutablePropTypes from 'react-immutable-proptypes' import ImmutablePureComponent from 'react-immutable-pure-component' import { NavLink } from 'react-router-dom' import { FormattedMessage } from 'react-intl' import { makeGetAccount } from '../../selectors' import { fetchRelationships } from '../../actions/accounts' import { shortNumberFormat } from '../../utils/numbers' import { me } from '../../initial_state' import PopoverLayout from './popover_layout' import AccountActionButton from '../account_action_button' import Avatar from '../avatar' import DisplayName from '../display_name' import UserStat from '../user_stat' class UserInfoPopover extends ImmutablePureComponent { componentDidMount() { this.checkRelationships(this.props.account) } componentDidUpdate(prevProps) { const { account } = this.props if (prevProps.account !== account) { this.checkRelationships(account) } } checkRelationships = (account) => { if (!account) return if (!account.get('relationship')) { this.props.onFetchRelationships(account.get('id')) } } render() { const { account, isXS } = this.props if (isXS || !me) return null const content = !account ? null : { __html: account.get('note_emojified') } const to = !account ? '' : `/${account.get('acct')}` return (
} value={shortNumberFormat(account.get('followers_count'))} to={`/${account.get('acct')}/followers`} isInline /> } value={shortNumberFormat(account.get('following_count'))} to={`/${account.get('acct')}/following`} isInline />
) } } const mapStateToProps = (state, props) => ({ account: makeGetAccount()(state, props.accountId), }) const mapDispatchToProps = (dispatch) => ({ onFetchRelationships(accountId) { dispatch(fetchRelationships([accountId])) }, }) UserInfoPopover.propTypes = { account: ImmutablePropTypes.map, accountId: PropTypes.string.isRequired, isXS: PropTypes.bool, } export default connect(mapStateToProps, mapDispatchToProps)(UserInfoPopover)