From 4460aaf7d355b7cd62fff6ecdd5d75e47e8f2c26 Mon Sep 17 00:00:00 2001 From: crockwave Date: Fri, 25 Sep 2020 16:02:31 -0500 Subject: [PATCH] Refactor media attachment detection. Solve restore focus after sensitive toggle and/or media upload --- app/soapbox/features/compose/components/compose_form.js | 6 ++++-- .../features/compose/containers/compose_form_container.js | 1 + 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/app/soapbox/features/compose/components/compose_form.js b/app/soapbox/features/compose/components/compose_form.js index 7cc4b3dd6..e97fc60ca 100644 --- a/app/soapbox/features/compose/components/compose_form.js +++ b/app/soapbox/features/compose/components/compose_form.js @@ -54,6 +54,7 @@ class ComposeForm extends ImmutablePureComponent { text: PropTypes.string.isRequired, suggestions: ImmutablePropTypes.list, spoiler: PropTypes.bool, + sensitive: PropTypes.bool, privacy: PropTypes.string, spoilerText: PropTypes.string, focusDate: PropTypes.instanceOf(Date), @@ -233,7 +234,6 @@ class ComposeForm extends ImmutablePureComponent { if (e.dataTransfer && e.dataTransfer.files.length >= 1) { this.props.dispatch(uploadCompose(e.dataTransfer.files)); - this.handleComposeFocus(); } } @@ -290,7 +290,9 @@ class ComposeForm extends ImmutablePureComponent { maybeUpdateFocus = prevProps => { const spoilerUpdated = this.props.spoiler !== prevProps.spoiler; - if (spoilerUpdated) { + const sensitiveUpdated = this.props.sensitive !== prevProps.sensitive; + const mediaUpdated = this.props.anyMedia !== prevProps.anyMedia; + if (spoilerUpdated || sensitiveUpdated || mediaUpdated) { switch (this.props.spoiler) { case true: this.focusSpoilerInput(); break; case false: this.focusTextarea(); break; diff --git a/app/soapbox/features/compose/containers/compose_form_container.js b/app/soapbox/features/compose/containers/compose_form_container.js index 0a7cefc96..8809268fc 100644 --- a/app/soapbox/features/compose/containers/compose_form_container.js +++ b/app/soapbox/features/compose/containers/compose_form_container.js @@ -16,6 +16,7 @@ const mapStateToProps = state => ({ suggestions: state.getIn(['compose', 'suggestions']), spoiler: state.getIn(['compose', 'spoiler']), spoilerText: state.getIn(['compose', 'spoiler_text']), + sensitive: state.getIn(['compose', 'sensitive']), privacy: state.getIn(['compose', 'privacy']), focusDate: state.getIn(['compose', 'focusDate']), caretPosition: state.getIn(['compose', 'caretPosition']),