From ea4915c7ddc5103734193ea291b2d6f6a69f8109 Mon Sep 17 00:00:00 2001 From: Alex Gleason Date: Mon, 13 Sep 2021 12:29:34 -0500 Subject: [PATCH] Conditionally display subscription button for Pleroma >= 1.0.0 --- .../features/account/components/header.js | 18 ++++++++++-------- app/soapbox/utils/features.js | 2 ++ 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/app/soapbox/features/account/components/header.js b/app/soapbox/features/account/components/header.js index 426486d80..d49614c0a 100644 --- a/app/soapbox/features/account/components/header.js +++ b/app/soapbox/features/account/components/header.js @@ -17,7 +17,6 @@ import { isRemote, getDomain, } from 'soapbox/utils/accounts'; -import { parseVersion } from 'soapbox/utils/features'; import classNames from 'classnames'; import Avatar from 'soapbox/components/avatar'; import { shortNumberFormat } from 'soapbox/utils/numbers'; @@ -30,6 +29,7 @@ import ActionButton from 'soapbox/features/ui/components/action_button'; import SubscriptionButton from 'soapbox/features/ui/components/subscription_button'; import { openModal } from 'soapbox/actions/modal'; import { List as ImmutableList, Map as ImmutableMap } from 'immutable'; +import { getFeatures } from 'soapbox/utils/features'; const messages = defineMessages({ edit_profile: { id: 'account.edit_profile', defaultMessage: 'Edit profile' }, @@ -72,11 +72,13 @@ const messages = defineMessages({ const mapStateToProps = state => { const me = state.get('me'); const account = state.getIn(['accounts', me]); + const instance = state.get('instance'); + const features = getFeatures(instance); return { me, meAccount: account, - version: parseVersion(state.getIn(['instance', 'version'])), + features, }; }; @@ -90,7 +92,7 @@ class Header extends ImmutablePureComponent { identity_props: ImmutablePropTypes.list, intl: PropTypes.object.isRequired, username: PropTypes.string, - version: PropTypes.object, + features: PropTypes.object, }; state = { @@ -156,7 +158,7 @@ class Header extends ImmutablePureComponent { } makeMenu() { - const { account, intl, me, meAccount, version } = this.props; + const { account, intl, me, meAccount, features } = this.props; const menu = []; @@ -196,7 +198,7 @@ class Header extends ImmutablePureComponent { menu.push({ text: intl.formatMessage(messages.add_or_remove_from_list), action: this.props.onAddToList }); // menu.push({ text: intl.formatMessage(account.getIn(['relationship', 'endorsed']) ? messages.unendorse : messages.endorse), action: this.props.onEndorseToggle }); menu.push(null); - } else if (version.software === 'Pleroma') { + } else if (features.unrestrictedLists) { menu.push({ text: intl.formatMessage(messages.add_or_remove_from_list), action: this.props.onAddToList }); } @@ -285,7 +287,7 @@ class Header extends ImmutablePureComponent { } render() { - const { account, intl, username, me } = this.props; + const { account, intl, username, me, features } = this.props; const { isSmallScreen } = this.state; if (!account) { @@ -323,9 +325,9 @@ class Header extends ImmutablePureComponent { {info} -
+ {features.accountSubscriptions &&
-
+
} {header && diff --git a/app/soapbox/utils/features.js b/app/soapbox/utils/features.js index 86a02479a..3d9d7260b 100644 --- a/app/soapbox/utils/features.js +++ b/app/soapbox/utils/features.js @@ -26,6 +26,8 @@ export const getFeatures = createSelector([ accountAliasesAPI: v.software === 'Pleroma', resetPasswordAPI: v.software === 'Pleroma', exposableReactions: features.includes('exposable_reactions'), + accountSubscriptions: v.software === 'Pleroma' && gte(v.version, '1.0.0'), + unrestrictedLists: v.software === 'Pleroma', }; });