From 318d82d0bbfbb4972336137d8eee4e71487ea8a1 Mon Sep 17 00:00:00 2001 From: matrix07012 <8049717+matrix07012@users.noreply.github.com> Date: Wed, 10 Jun 2026 11:27:38 +0200 Subject: [PATCH] [Glitch] Fix being unable to unmark media as sensitive when "always mark media as sensitive" is enabled Port f2094164c4046822dc455ae56f8d1847e88dc129 to glitch-soc Signed-off-by: Claire --- .../features/compose/components/compose_form.jsx | 4 +++- app/javascript/flavours/glitch/reducers/compose.js | 10 +++++++--- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/app/javascript/flavours/glitch/features/compose/components/compose_form.jsx b/app/javascript/flavours/glitch/features/compose/components/compose_form.jsx index 4ca652ffbb..e84aeab5f7 100644 --- a/app/javascript/flavours/glitch/features/compose/components/compose_form.jsx +++ b/app/javascript/flavours/glitch/features/compose/components/compose_form.jsx @@ -242,7 +242,9 @@ class ComposeForm extends ImmutablePureComponent { } else if(prevProps.isSubmitting && !this.props.isSubmitting) { this.textareaRef.current.focus(); } else if (this.props.spoiler !== prevProps.spoiler) { - if (this.props.spoiler) { + const mediaJustAdded = this.props.anyMedia && !prevProps.anyMedia; + + if (this.props.spoiler && !mediaJustAdded) { this.spoilerText.input.focus(); } else if (prevProps.spoiler) { this.textareaRef.current.focus(); diff --git a/app/javascript/flavours/glitch/reducers/compose.js b/app/javascript/flavours/glitch/reducers/compose.js index 15a9370066..63b51f06f9 100644 --- a/app/javascript/flavours/glitch/reducers/compose.js +++ b/app/javascript/flavours/glitch/reducers/compose.js @@ -237,6 +237,10 @@ function appendMedia(state, media, file) { if (prevSize === 0 && (state.get('default_sensitive') || state.get('spoiler'))) { map.set('sensitive', true); + + if (state.get('default_sensitive')) { + map.set('spoiler', true); + } } }); } @@ -483,7 +487,7 @@ export const composeReducer = (state = initialState, action) => { map.set('spoiler', !state.get('spoiler')); map.set('idempotencyKey', uuid()); - if (state.get('media_attachments').size >= 1 && !state.get('default_sensitive')) { + if (state.get('media_attachments').size >= 1) { map.set('sensitive', !state.get('spoiler')); } }); @@ -665,7 +669,7 @@ export const composeReducer = (state = initialState, action) => { map.set('sensitive', true); } } else { - map.set('spoiler', false); + map.set('spoiler', action.status.get('sensitive') && action.status.get('media_attachments').size > 0); map.set('spoiler_text', ''); } @@ -704,7 +708,7 @@ export const composeReducer = (state = initialState, action) => { map.set('spoiler', true); map.set('spoiler_text', action.spoiler_text); } else { - map.set('spoiler', false); + map.set('spoiler', action.status.get('sensitive') && action.status.get('media_attachments').size > 0); map.set('spoiler_text', ''); }