diff options
author | Thibaut Girka <thib@sitedethib.com> | 2018-08-22 15:58:57 +0200 |
---|---|---|
committer | ThibG <thib@sitedethib.com> | 2018-08-29 14:29:36 +0200 |
commit | 171e54eb469ac48830eba2349b3298c004ec19f5 (patch) | |
tree | ac71fec646a6faecd0297d38f2d586101a9a57ae /app/javascript/flavours/glitch | |
parent | 1b479f08c56f2a4c291ccfffcb8e1217f0ca3686 (diff) |
Add opt-in feature to have the spoilers field always on (fixes #634)
Diffstat (limited to 'app/javascript/flavours/glitch')
4 files changed, 24 insertions, 9 deletions
diff --git a/app/javascript/flavours/glitch/features/composer/index.js b/app/javascript/flavours/glitch/features/composer/index.js index f312e9d59..cf6f45b34 100644 --- a/app/javascript/flavours/glitch/features/composer/index.js +++ b/app/javascript/flavours/glitch/features/composer/index.js @@ -51,6 +51,7 @@ import { privacyPreference } from 'flavours/glitch/util/privacy_preference'; // State mapping. function mapStateToProps (state) { + const spoilersAlwaysOn = state.getIn(['local_settings', 'always_show_spoilers_field']); const inReplyTo = state.getIn(['compose', 'in_reply_to']); const replyPrivacy = inReplyTo ? state.getIn(['statuses', inReplyTo, 'visibility']) : null; const sideArmBasePrivacy = state.getIn(['local_settings', 'side_arm']); @@ -85,12 +86,13 @@ function mapStateToProps (state) { sideArm: sideArmPrivacy, sensitive: state.getIn(['compose', 'sensitive']), showSearch: state.getIn(['search', 'submitted']) && !state.getIn(['search', 'hidden']), - spoiler: state.getIn(['compose', 'spoiler']), + spoiler: spoilersAlwaysOn || state.getIn(['compose', 'spoiler']), spoilerText: state.getIn(['compose', 'spoiler_text']), suggestionToken: state.getIn(['compose', 'suggestion_token']), suggestions: state.getIn(['compose', 'suggestions']), text: state.getIn(['compose', 'text']), anyMedia: state.getIn(['compose', 'media_attachments']).size > 0, + spoilersAlwaysOn: spoilersAlwaysOn, }; }; @@ -376,6 +378,7 @@ class Composer extends React.Component { spoilerText, suggestions, text, + spoilersAlwaysOn, } = this.props; let disabledButton = isSubmitting || isUploading || (!!text.length && !text.trim().length && !anyMedia); @@ -443,7 +446,7 @@ class Composer extends React.Component { onDoodleOpen={onOpenDoodleModal} onModalClose={onCloseModal} onModalOpen={onOpenActionsModal} - onToggleSpoiler={onChangeSpoilerness} + onToggleSpoiler={spoilersAlwaysOn ? null : onChangeSpoilerness} onUpload={onUpload} privacy={privacy} resetFileKey={resetFileKey} @@ -515,6 +518,7 @@ Composer.propTypes = { onUnmount: PropTypes.func, onUpload: PropTypes.func, anyMedia: PropTypes.bool, + spoilersAlwaysOn: PropTypes.bool, }; // Connecting and export. diff --git a/app/javascript/flavours/glitch/features/composer/options/index.js b/app/javascript/flavours/glitch/features/composer/options/index.js index c129622bc..05cbe24c9 100644 --- a/app/javascript/flavours/glitch/features/composer/options/index.js +++ b/app/javascript/flavours/glitch/features/composer/options/index.js @@ -285,13 +285,15 @@ export default class ComposerOptions extends React.PureComponent { title={intl.formatMessage(messages.change_privacy)} value={privacy} /> - <TextIconButton - active={spoiler} - ariaControls='glitch.composer.spoiler.input' - label='CW' - onClick={onToggleSpoiler} - title={intl.formatMessage(messages.spoiler)} - /> + {onToggleSpoiler && ( + <TextIconButton + active={spoiler} + ariaControls='glitch.composer.spoiler.input' + label='CW' + onClick={onToggleSpoiler} + title={intl.formatMessage(messages.spoiler)} + /> + )} <Dropdown active={advancedOptions && advancedOptions.some(value => !!value)} disabled={disabled} diff --git a/app/javascript/flavours/glitch/features/local_settings/page/index.js b/app/javascript/flavours/glitch/features/local_settings/page/index.js index f88e23c47..ad5c11979 100644 --- a/app/javascript/flavours/glitch/features/local_settings/page/index.js +++ b/app/javascript/flavours/glitch/features/local_settings/page/index.js @@ -77,6 +77,14 @@ export default class LocalSettingsPage extends React.PureComponent { <h2><FormattedMessage id='settings.compose_box_opts' defaultMessage='Compose box options' /></h2> <LocalSettingsPageItem settings={settings} + item={['always_show_spoilers_field']} + id='mastodon-settings--always_show_spoilers_field' + onChange={onChange} + > + <FormattedMessage id='settings.always_show_spoilers_field' defaultMessage='Always enable the Content Warning field' /> + </LocalSettingsPageItem> + <LocalSettingsPageItem + settings={settings} item={['side_arm']} id='mastodon-settings--side_arm' options={[ diff --git a/app/javascript/flavours/glitch/reducers/local_settings.js b/app/javascript/flavours/glitch/reducers/local_settings.js index 51032f345..1d24f0e9a 100644 --- a/app/javascript/flavours/glitch/reducers/local_settings.js +++ b/app/javascript/flavours/glitch/reducers/local_settings.js @@ -12,6 +12,7 @@ const initialState = ImmutableMap({ side_arm : 'none', side_arm_reply_mode : 'keep', show_reply_count : false, + always_show_spoilers_field: false, collapsed : ImmutableMap({ enabled : true, auto : ImmutableMap({ |