diff --git a/app/soapbox/features/compose/containers/sensitive_button_container.js b/app/soapbox/features/compose/containers/sensitive_button_container.js
index dc98de561..3497c0009 100644
--- a/app/soapbox/features/compose/containers/sensitive_button_container.js
+++ b/app/soapbox/features/compose/containers/sensitive_button_container.js
@@ -12,6 +12,7 @@ const messages = defineMessages({
const mapStateToProps = state => ({
active: state.getIn(['compose', 'sensitive']),
+ disabled: state.getIn(['compose', 'spoiler']),
});
const mapDispatchToProps = dispatch => ({
@@ -26,12 +27,13 @@ class SensitiveButton extends React.PureComponent {
static propTypes = {
active: PropTypes.bool,
+ disabled: PropTypes.bool,
onClick: PropTypes.func.isRequired,
intl: PropTypes.object.isRequired,
};
render() {
- const { active, onClick, intl } = this.props;
+ const { active, disabled, onClick, intl } = this.props;
return (
@@ -41,6 +43,7 @@ class SensitiveButton extends React.PureComponent {
type='checkbox'
checked={active}
onChange={onClick}
+ disabled={disabled}
/>
diff --git a/app/soapbox/reducers/compose.js b/app/soapbox/reducers/compose.js
index c2e39e866..d9d554d47 100644
--- a/app/soapbox/reducers/compose.js
+++ b/app/soapbox/reducers/compose.js
@@ -114,7 +114,7 @@ function appendMedia(state, media) {
map.set('resetFileKey', Math.floor((Math.random() * 0x10000)));
map.set('idempotencyKey', uuid());
- if (prevSize === 0 && state.get('default_sensitive')) {
+ if (prevSize === 0 && (state.get('default_sensitive') || state.get('spoiler'))) {
map.set('sensitive', true);
}
});
@@ -211,7 +211,9 @@ export default function compose(state = initialState, action) {
.set('is_composing', false);
case COMPOSE_SENSITIVITY_CHANGE:
return state.withMutations(map => {
- map.set('sensitive', !state.get('sensitive'));
+ if (!state.get('spoiler')) {
+ map.set('sensitive', !state.get('sensitive'));
+ }
map.set('idempotencyKey', uuid());
});
@@ -220,6 +222,10 @@ export default function compose(state = initialState, action) {
map.set('spoiler_text', '');
map.set('spoiler', !state.get('spoiler'));
map.set('idempotencyKey', uuid());
+
+ if (!state.get('sensitive') && state.get('media_attachments').size >= 1) {
+ map.set('sensitive', true);
+ }
});
case COMPOSE_SPOILER_TEXT_CHANGE:
return state