import { OrderedSet as ImmutableOrderedSet } from 'immutable'; import PropTypes from 'prop-types'; import React from 'react'; import { injectIntl, defineMessages } from 'react-intl'; import { connect } from 'react-redux'; import { NavLink } from 'react-router-dom'; import Icon from 'soapbox/components/icon'; import IconWithCounter from 'soapbox/components/icon_with_counter'; import { getFeatures } from 'soapbox/utils/features'; const messages = defineMessages({ edit_profile: { id: 'account.edit_profile', defaultMessage: 'Edit Profile' }, preferences: { id: 'navigation_bar.preferences', defaultMessage: 'Preferences' }, security: { id: 'navigation_bar.security', defaultMessage: 'Security' }, lists: { id: 'column.lists', defaultMessage: 'Lists' }, bookmarks: { id: 'column.bookmarks', defaultMessage: 'Bookmarks' }, follow_requests: { id: 'navigation_bar.follow_requests', defaultMessage: 'Follow requests' }, }); const mapStateToProps = state => { const me = state.get('me'); const instance = state.get('instance'); const features = getFeatures(instance); return { isLocked: state.getIn(['accounts', me, 'locked']), followRequestsCount: state.getIn(['user_lists', 'follow_requests', 'items'], ImmutableOrderedSet()).count(), features, }; }; export default @connect(mapStateToProps) @injectIntl class FeaturesPanel extends React.PureComponent { static propTypes = { intl: PropTypes.object.isRequired, isLocked: PropTypes.bool, followRequestsCount: PropTypes.number, features: PropTypes.object.isRequired, }; render() { const { intl, isLocked, followRequestsCount, features } = this.props; return (
{(isLocked || followRequestsCount > 0) && {intl.formatMessage(messages.follow_requests)} } {features.bookmarks && ( {intl.formatMessage(messages.bookmarks)} )} {features.lists && ( {intl.formatMessage(messages.lists)} )}
); } }