import React from 'react' import PropTypes from 'prop-types' import { connect } from 'react-redux' import { NavLink } from 'react-router-dom' import ImmutablePropTypes from 'react-immutable-proptypes' import { defineMessages, injectIntl } from 'react-intl' import ImmutablePureComponent from 'react-immutable-pure-component' import { me } from '../initial_state' import { CX } from '../constants' import { followAccount, unfollowAccount, blockAccount, unblockAccount, muteAccount, unmuteAccount, } from '../actions/accounts' import { openModal } from '../actions/modal' import { initMuteModal } from '../actions/mutes' import { unfollowModal } from '../initial_state' import { makeGetAccount } from '../selectors' import AccountActionButton from './account_action_button' import Avatar from './avatar' import DisplayName from './display_name' import Button from './button' import Text from './text' class Account extends ImmutablePureComponent { handleAction = (e) => { this.props.onActionClick(this.props.account, e) e.preventDefault() return false } handleUnrequest = () => { // } render() { const { account, intl, isHidden, onActionClick, actionIcon, actionTitle, compact, expanded, dismissAction, showDismiss, withBio, isCard, noClick, } = this.props if (!account) return null if (isHidden) { return ( {account.get('display_name')} {`@${account.get('username')}`} ) } const actionButton = (onActionClick && (actionIcon || actionTitle)) ? ( ) : const avatarSize = compact ? 40 : 52 const dismissBtn = !showDismiss ? null : (
{dismissBtn} {compact && actionButton}
{ withBio &&
}
) } } const makeMapStateToProps = (state, props) => ({ account: makeGetAccount()(state, props.id), }) const mapDispatchToProps = (dispatch) => ({ onFollow (account) { if (account.getIn(['relationship', 'following']) || account.getIn(['relationship', 'requested'])) { if (unfollowModal) { dispatch(openModal('UNFOLLOW', { account, })) } else { dispatch(unfollowAccount(account.get('id'))) } } else { dispatch(followAccount(account.get('id'))) } }, onBlock (account) { if (account.getIn(['relationship', 'blocking'])) { dispatch(unblockAccount(account.get('id'))) } else { dispatch(blockAccount(account.get('id'))) } }, onMute (account) { if (account.getIn(['relationship', 'muting'])) { dispatch(unmuteAccount(account.get('id'))) } else { dispatch(initMuteModal(account)) } }, onMuteNotifications (account, notifications) { dispatch(muteAccount(account.get('id'), notifications)) }, }) Account.propTypes = { account: ImmutablePropTypes.map.isRequired, onFollow: PropTypes.func.isRequired, onBlock: PropTypes.func.isRequired, onMute: PropTypes.func.isRequired, onMuteNotifications: PropTypes.func, intl: PropTypes.object.isRequired, isHidden: PropTypes.bool, actionIcon: PropTypes.string, actionTitle: PropTypes.string, onActionClick: PropTypes.func, compact: PropTypes.bool, expanded: PropTypes.bool, showDismiss: PropTypes.bool, dismissAction: PropTypes.func, withBio: PropTypes.bool, isCard: PropTypes.bool, noClick: PropTypes.bool, } export default injectIntl(connect(makeMapStateToProps, mapDispatchToProps)(Account))