Add an option restricting secondary toot privacy to that of the toot being replied to
This commit is contained in:
parent
d8b13b46f7
commit
57f31b361f
|
@ -47,13 +47,24 @@ import { me } from 'flavours/glitch/util/initial_state';
|
||||||
import { isMobile } from 'flavours/glitch/util/is_mobile';
|
import { isMobile } from 'flavours/glitch/util/is_mobile';
|
||||||
import { assignHandlers } from 'flavours/glitch/util/react_helpers';
|
import { assignHandlers } from 'flavours/glitch/util/react_helpers';
|
||||||
import { wrap } from 'flavours/glitch/util/redux_helpers';
|
import { wrap } from 'flavours/glitch/util/redux_helpers';
|
||||||
|
import { privacyPreference } from 'flavours/glitch/util/privacy_preference';
|
||||||
|
|
||||||
// State mapping.
|
// State mapping.
|
||||||
function mapStateToProps (state) {
|
function mapStateToProps (state) {
|
||||||
const inReplyTo = state.getIn(['compose', 'in_reply_to']);
|
const inReplyTo = state.getIn(['compose', 'in_reply_to']);
|
||||||
const replyPrivacy = inReplyTo ? state.getIn(['statuses', inReplyTo, 'visibility']) : null;
|
const replyPrivacy = inReplyTo ? state.getIn(['statuses', inReplyTo, 'visibility']) : null;
|
||||||
const sideArmBasePrivacy = state.getIn(['local_settings', 'side_arm']);
|
const sideArmBasePrivacy = state.getIn(['local_settings', 'side_arm']);
|
||||||
const sideArmPrivacy = (state.getIn(['local_settings', 'side_arm_reply_mode']) === 'copy' ? replyPrivacy : null) || sideArmBasePrivacy;
|
const sideArmRestrictedPrivacy = replyPrivacy ? privacyPreference(replyPrivacy, sideArmBasePrivacy) : null;
|
||||||
|
let sideArmPrivacy = null;
|
||||||
|
switch (state.getIn(['local_settings', 'side_arm_reply_mode'])) {
|
||||||
|
case 'copy':
|
||||||
|
sideArmPrivacy = replyPrivacy;
|
||||||
|
break;
|
||||||
|
case 'restrict':
|
||||||
|
sideArmPrivacy = sideArmRestrictedPrivacy;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
sideArmPrivacy = sideArmPrivacy || sideArmBasePrivacy;
|
||||||
return {
|
return {
|
||||||
acceptContentTypes: state.getIn(['media_attachments', 'accept_content_types']).toArray().join(','),
|
acceptContentTypes: state.getIn(['media_attachments', 'accept_content_types']).toArray().join(','),
|
||||||
advancedOptions: state.getIn(['compose', 'advanced_options']),
|
advancedOptions: state.getIn(['compose', 'advanced_options']),
|
||||||
|
|
|
@ -16,6 +16,7 @@ const messages = defineMessages({
|
||||||
side_arm_none: { id: 'settings.side_arm.none', defaultMessage: 'None' },
|
side_arm_none: { id: 'settings.side_arm.none', defaultMessage: 'None' },
|
||||||
side_arm_keep: { id: 'settings.side_arm_reply_mode.keep', defaultMessage: 'Keep secondary toot button to set privacy' },
|
side_arm_keep: { id: 'settings.side_arm_reply_mode.keep', defaultMessage: 'Keep secondary toot button to set privacy' },
|
||||||
side_arm_copy: { id: 'settings.side_arm_reply_mode.copy', defaultMessage: 'Copy privacy setting of the toot being replied to' },
|
side_arm_copy: { id: 'settings.side_arm_reply_mode.copy', defaultMessage: 'Copy privacy setting of the toot being replied to' },
|
||||||
|
side_arm_restrict: { id: 'settings.side_arm_reply_mode.restrict', defaultMessage: 'Restrict privacy setting to that of the toot being replied to' },
|
||||||
});
|
});
|
||||||
|
|
||||||
@injectIntl
|
@injectIntl
|
||||||
|
@ -84,7 +85,8 @@ export default class LocalSettingsPage extends React.PureComponent {
|
||||||
id='mastodon-settings--side_arm_reply_mode'
|
id='mastodon-settings--side_arm_reply_mode'
|
||||||
options={[
|
options={[
|
||||||
{ value: 'keep', message: intl.formatMessage(messages.side_arm_keep) },
|
{ value: 'keep', message: intl.formatMessage(messages.side_arm_keep) },
|
||||||
{ value: 'copy', message: intl.formatMessage(messages.side_arm_copy) }
|
{ value: 'copy', message: intl.formatMessage(messages.side_arm_copy) },
|
||||||
|
{ value: 'restrict', message: intl.formatMessage(messages.side_arm_restrict) },
|
||||||
]}
|
]}
|
||||||
onChange={onChange}
|
onChange={onChange}
|
||||||
>
|
>
|
||||||
|
|
Reference in New Issue