Merge branch 'mark-sensitive-fix' into 'develop'

Statuses: refactor visibility of moderator actions

Closes #689

See merge request soapbox-pub/soapbox-fe!621
This commit is contained in:
Alex Gleason 2021-07-15 16:42:37 +00:00
commit de24322372
3 changed files with 39 additions and 26 deletions

View file

@ -277,6 +277,7 @@ class StatusActionBar extends ImmutablePureComponent {
_makeMenu = (publicStatus) => {
const { status, intl, withDismiss, withGroupAdmin, me, isStaff, isAdmin } = this.props;
const mutingConversation = status.get('muted');
const ownAccount = status.getIn(['account', 'id']) === me;
let menu = [];
@ -295,12 +296,12 @@ class StatusActionBar extends ImmutablePureComponent {
menu.push(null);
if (status.getIn(['account', 'id']) === me || withDismiss) {
if (ownAccount || withDismiss) {
menu.push({ text: intl.formatMessage(mutingConversation ? messages.unmuteConversation : messages.muteConversation), action: this.handleConversationMuteClick });
menu.push(null);
}
if (status.getIn(['account', 'id']) === me) {
if (ownAccount) {
if (publicStatus) {
menu.push({ text: intl.formatMessage(status.get('pinned') ? messages.unpin : messages.pin), action: this.handlePinClick });
} else {
@ -318,24 +319,29 @@ class StatusActionBar extends ImmutablePureComponent {
menu.push({ text: intl.formatMessage(messages.mute, { name: status.getIn(['account', 'username']) }), action: this.handleMuteClick });
menu.push({ text: intl.formatMessage(messages.block, { name: status.getIn(['account', 'username']) }), action: this.handleBlockClick });
menu.push({ text: intl.formatMessage(messages.report, { name: status.getIn(['account', 'username']) }), action: this.handleReport });
}
if (isStaff) {
menu.push(null);
if (isAdmin) {
menu.push({ text: intl.formatMessage(messages.admin_account, { name: status.getIn(['account', 'username']) }), href: `/pleroma/admin/#/users/${status.getIn(['account', 'id'])}/` });
menu.push({ text: intl.formatMessage(messages.admin_status), href: `/pleroma/admin/#/statuses/${status.get('id')}/` });
}
if (isStaff) {
menu.push(null);
if (isAdmin) {
menu.push({ text: intl.formatMessage(messages.admin_account, { name: status.getIn(['account', 'username']) }), href: `/pleroma/admin/#/users/${status.getIn(['account', 'id'])}/` });
menu.push({ text: intl.formatMessage(messages.admin_status), href: `/pleroma/admin/#/statuses/${status.get('id')}/` });
}
menu.push({ text: intl.formatMessage(status.get('sensitive') === false ? messages.markStatusSensitive : messages.markStatusNotSensitive), action: this.handleToggleStatusSensitivity });
if (!ownAccount) {
menu.push({ text: intl.formatMessage(messages.deactivateUser, { name: status.getIn(['account', 'username']) }), action: this.handleDeactivateUser });
menu.push({ text: intl.formatMessage(messages.deleteUser, { name: status.getIn(['account', 'username']) }), action: this.handleDeleteUser });
menu.push({ text: intl.formatMessage(status.get('sensitive') === false ? messages.markStatusSensitive : messages.markStatusNotSensitive), action: this.handleToggleStatusSensitivity });
menu.push({ text: intl.formatMessage(messages.deleteStatus), action: this.handleDeleteStatus });
}
}
if (withGroupAdmin) {
menu.push(null);
menu.push({ text: intl.formatMessage(messages.group_remove_account), action: this.handleGroupRemoveAccount });
menu.push({ text: intl.formatMessage(messages.group_remove_post), action: this.handleGroupRemovePost });
}
if (!ownAccount && withGroupAdmin) {
menu.push(null);
menu.push({ text: intl.formatMessage(messages.group_remove_account), action: this.handleGroupRemoveAccount });
menu.push({ text: intl.formatMessage(messages.group_remove_post), action: this.handleGroupRemovePost });
}
return menu;

View file

@ -287,7 +287,7 @@ class Header extends ImmutablePureComponent {
);
}
const self = account.get('id') === me;
const ownAccount = account.get('id') === me;
const info = this.makeInfo();
const menu = this.makeMenu();
@ -324,18 +324,18 @@ class Header extends ImmutablePureComponent {
<span><FormattedMessage id='account.posts' defaultMessage='Posts' /></span>
</NavLink>
{(self || !account.getIn(['pleroma', 'hide_follows'], false)) && <NavLink exact activeClassName='active' to={`/@${account.get('acct')}/following`} title={intl.formatNumber(account.get('following_count'))}>
{(ownAccount || !account.getIn(['pleroma', 'hide_follows'], false)) && <NavLink exact activeClassName='active' to={`/@${account.get('acct')}/following`} title={intl.formatNumber(account.get('following_count'))}>
{account.getIn(['pleroma', 'hide_follows_count'], false) ? <span></span> : <span>{shortNumberFormat(account.get('following_count'))}</span>}
<span><FormattedMessage id='account.follows' defaultMessage='Follows' /></span>
</NavLink>}
{(self || !account.getIn(['pleroma', 'hide_followers'], false)) && <NavLink exact activeClassName='active' to={`/@${account.get('acct')}/followers`} title={intl.formatNumber(account.get('followers_count'))}>
{(ownAccount || !account.getIn(['pleroma', 'hide_followers'], false)) && <NavLink exact activeClassName='active' to={`/@${account.get('acct')}/followers`} title={intl.formatNumber(account.get('followers_count'))}>
{account.getIn(['pleroma', 'hide_followers_count'], false) ? <span></span> : <span>{shortNumberFormat(account.get('followers_count'))}</span>}
<span><FormattedMessage id='account.followers' defaultMessage='Followers' /></span>
</NavLink>}
{
self &&
ownAccount &&
<div>
<NavLink
exact activeClassName='active' to={`/@${account.get('acct')}/favorites`}

View file

@ -269,6 +269,7 @@ class ActionBar extends React.PureComponent {
render() {
const { status, intl, me, isStaff, isAdmin, allowedEmoji } = this.props;
const { emojiSelectorVisible } = this.state;
const ownAccount = status.getIn(['account', 'id']) === me;
const publicStatus = ['public', 'unlisted'].includes(status.get('visibility'));
const mutingConversation = status.get('muted');
@ -293,7 +294,7 @@ class ActionBar extends React.PureComponent {
menu.push(null);
if (me === status.getIn(['account', 'id'])) {
if (ownAccount) {
if (publicStatus) {
menu.push({ text: intl.formatMessage(status.get('pinned') ? messages.unpin : messages.pin), action: this.handlePinClick });
} else {
@ -314,15 +315,21 @@ class ActionBar extends React.PureComponent {
menu.push({ text: intl.formatMessage(messages.mute, { name: status.getIn(['account', 'username']) }), action: this.handleMuteClick });
menu.push({ text: intl.formatMessage(messages.block, { name: status.getIn(['account', 'username']) }), action: this.handleBlockClick });
menu.push({ text: intl.formatMessage(messages.report, { name: status.getIn(['account', 'username']) }), action: this.handleReport });
if (isStaff) {
menu.push(null);
if (isAdmin) {
menu.push({ text: intl.formatMessage(messages.admin_account, { name: status.getIn(['account', 'username']) }), href: `/pleroma/admin/#/users/${status.getIn(['account', 'id'])}/` });
menu.push({ text: intl.formatMessage(messages.admin_status), href: `/pleroma/admin/#/statuses/${status.get('id')}/` });
}
}
if (isStaff) {
menu.push(null);
if (isAdmin) {
menu.push({ text: intl.formatMessage(messages.admin_account, { name: status.getIn(['account', 'username']) }), href: `/pleroma/admin/#/users/${status.getIn(['account', 'id'])}/` });
menu.push({ text: intl.formatMessage(messages.admin_status), href: `/pleroma/admin/#/statuses/${status.get('id')}/` });
}
menu.push({ text: intl.formatMessage(status.get('sensitive') === false ? messages.markStatusSensitive : messages.markStatusNotSensitive), action: this.handleToggleStatusSensitivity });
if (!ownAccount) {
menu.push({ text: intl.formatMessage(messages.deactivateUser, { name: status.getIn(['account', 'username']) }), action: this.handleDeactivateUser });
menu.push({ text: intl.formatMessage(messages.deleteUser, { name: status.getIn(['account', 'username']) }), action: this.handleDeleteUser });
menu.push({ text: intl.formatMessage(status.get('sensitive') === false ? messages.markStatusSensitive : messages.markStatusNotSensitive), action: this.handleToggleStatusSensitivity });
menu.push({ text: intl.formatMessage(messages.deleteStatus), action: this.handleDeleteStatus });
}
}