import React from 'react'; import { connect } from 'react-redux'; import PropTypes from 'prop-types'; import ImmutablePropTypes from 'react-immutable-proptypes'; import ImmutablePureComponent from 'react-immutable-pure-component'; import { defineMessages, injectIntl } from 'react-intl'; import classNames from 'classnames'; import Permalink from 'flavours/glitch/components/permalink'; import ShortNumber from 'flavours/glitch/components/short_number'; import { List as ImmutableList } from 'immutable'; const messages = defineMessages({ hashtag_all: { id: 'account.hashtag_all', defaultMessage: 'All' }, hashtag_all_description: { id: 'account.hashtag_all_description', defaultMessage: 'All posts (deselect hashtags)' }, hashtag_select_description: { id: 'account.hashtag_select_description', defaultMessage: 'Select hashtag #{name}' }, statuses_counter: { id: 'account.statuses_counter', defaultMessage: '{count, plural, one {{counter} Post} other {{counter} Posts}}' }, }); const mapStateToProps = (state, { account }) => ({ featuredTags: state.getIn(['user_lists', 'featured_tags', account.get('id'), 'items'], ImmutableList()), }); export default @connect(mapStateToProps) @injectIntl class FeaturedTags extends ImmutablePureComponent { static contextTypes = { router: PropTypes.object, }; static propTypes = { account: ImmutablePropTypes.map, featuredTags: ImmutablePropTypes.list, tagged: PropTypes.string, intl: PropTypes.object.isRequired, }; render () { const { account, featuredTags, tagged, intl } = this.props; if (!account || featuredTags.isEmpty()) { return null; } const suspended = account.get('suspended'); return (
{intl.formatMessage(messages.hashtag_all)} {!suspended && featuredTags.map(featuredTag => { const name = featuredTag.get('name'); const url = featuredTag.get('url'); const to = `/@${account.get('acct')}/tagged/${name}`; const desc = intl.formatMessage(messages.hashtag_select_description, { name }); const count = featuredTag.get('statuses_count'); return ( #{name} ({}) ); })}
); } }