import React from 'react'; import PropTypes from 'prop-types'; import ImmutablePropTypes from 'react-immutable-proptypes'; import ImmutablePureComponent from 'react-immutable-pure-component'; import { connect } from 'react-redux'; import { makeGetAccount } from 'mastodon/selectors'; import Avatar from 'mastodon/components/avatar'; import DisplayName from 'mastodon/components/display_name'; import Permalink from 'mastodon/components/permalink'; import IconButton from 'mastodon/components/icon_button'; import { injectIntl, defineMessages } from 'react-intl'; import { followAccount, unfollowAccount } from 'mastodon/actions/accounts'; const messages = defineMessages({ follow: { id: 'account.follow', defaultMessage: 'Follow' }, unfollow: { id: 'account.unfollow', defaultMessage: 'Unfollow' }, }); const makeMapStateToProps = () => { const getAccount = makeGetAccount(); const mapStateToProps = (state, props) => ({ account: getAccount(state, props.id), }); return mapStateToProps; }; const getFirstSentence = str => { const arr = str.split(/(([\.\?!]+\s)|[.。?!\n•])/); return arr[0]; }; export default @connect(makeMapStateToProps) @injectIntl class Account extends ImmutablePureComponent { static propTypes = { account: ImmutablePropTypes.map.isRequired, intl: PropTypes.object.isRequired, dispatch: PropTypes.func.isRequired, }; handleFollow = () => { const { account, dispatch } = this.props; if (account.getIn(['relationship', 'following']) || account.getIn(['relationship', 'requested'])) { dispatch(unfollowAccount(account.get('id'))); } else { dispatch(followAccount(account.get('id'))); } } render () { const { account, intl } = this.props; let button; if (account.getIn(['relationship', 'following'])) { button = ; } else { button = ; } return (
{getFirstSentence(account.get('note_plain'))}
{button}
); } }