import axios from 'axios' import ImmutablePropTypes from 'react-immutable-proptypes' import ImmutablePureComponent from 'react-immutable-pure-component' import { defineMessages, injectIntl, FormattedMessage } from 'react-intl' import classNames from 'classnames/bind' import { followAccount, unfollowAccount, blockAccount, unblockAccount, } from '../actions/accounts' import { openPopover, closePopover } from '../actions/popover' import { initReport } from '../actions/reports' import { openModal } from '../actions/modal' import { unfollowModal, me } from '../initial_state' import Avatar from './avatar' import Image from './image' import Text from './text' import Button from './button' import DisplayName from './display_name' import TabBar from './tab_bar' const cx = classNames.bind(_s) const messages = defineMessages({ follow: { id: 'follow', defaultMessage: 'Follow' }, unfollow: { id: 'unfollow', defaultMessage: 'Unfollow' }, requested: { id: 'requested', defaultMessage: 'Requested' }, unblock: { id: 'unblock', defaultMessage: 'Unblock' }, followers: { id: 'account.followers', defaultMessage: 'Followers' }, follows: { id: 'account.follows', defaultMessage: 'Follows' }, profile: { id: 'account.profile', defaultMessage: 'Profile' }, }) const mapStateToProps = state => { return { } } const mapDispatchToProps = (dispatch, { intl }) => ({ openProfileOptionsPopover(props) { console.log("props:", props) dispatch(openPopover('PROFILE_OPTIONS', props)) }, onFollow(account) { if (account.getIn(['relationship', 'following']) || account.getIn(['relationship', 'requested'])) { if (unfollowModal) { dispatch(openModal('UNFOLLOW', { accountId: account.get('id'), })); } 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(openModal('BLOCK_ACCOUNT', { accountId: account.get('id'), })); } }, onRepostToggle(account) { if (account.getIn(['relationship', 'showing_reblogs'])) { dispatch(followAccount(account.get('id'), false)); } else { dispatch(followAccount(account.get('id'), true)); } }, }); export default @connect(mapStateToProps, mapDispatchToProps) @injectIntl class ProfileHeader extends ImmutablePureComponent { static propTypes = { account: ImmutablePropTypes.map, intl: PropTypes.object.isRequired, onFollow: PropTypes.func.isRequired, onBlock: PropTypes.func.isRequired, openProfileOptionsPopover: PropTypes.func.isRequired, } handleOpenMore = () => { const { openProfileOptionsPopover, account } = this.props openProfileOptionsPopover({ targetRef: this.openMoreNode, position: 'top', account: this.props.account, }) } handleFollow = () => { this.props.onFollow(this.props.account) } handleUnrequest = () => { // } handleBlock = () => { // this.props.onBlock(this.props.account) } makeInfo() { const { account, intl } = this.props; let info = []; if (!account || !me) return info; if (me !== account.get('id') && account.getIn(['relationship', 'followed_by'])) { info.push({intl.formatMessage(messages.accountFollowsYou)}); } else if (me !== account.get('id') && account.getIn(['relationship', 'blocking'])) { info.push({intl.formatMessage(messages.accountBlocked)}); } if (me !== account.get('id') && account.getIn(['relationship', 'muting'])) { info.push({intl.formatMessage(messages.accountMuted)}); } else if (me !== account.get('id') && account.getIn(['relationship', 'domain_blocking'])) { info.push({intl.formatMessage(messages.domainBlocked)}); } return info; }; getActionBtn() { const { account, intl } = this.props; let actionBtn = null; if (!account || !me) return actionBtn; if (me !== account.get('id')) { if (!account.get('relationship')) { // Wait until the relationship is loaded // } else if (account.getIn(['relationship', 'requested'])) { actionBtn = } { account && account.get('id') !== me &&
} ) } }