summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMélanie Chauvel <perso@hack-libre.org>2020-11-30 12:09:34 +0100
committerGitHub <noreply@github.com>2020-11-30 12:09:34 +0100
commit68775b60392152d32deda45a261bc1d4f848b44a (patch)
tree9afe06b51cecce5912b8094846923fc9d5da52ed
parentb429d33e46457bbb2143b780c5a7a1f1bd5a8406 (diff)
Fix character count not ignoring hidden CW field (#15236)
-rw-r--r--app/javascript/mastodon/features/compose/components/compose_form.js26
1 files changed, 16 insertions, 10 deletions
diff --git a/app/javascript/mastodon/features/compose/components/compose_form.js b/app/javascript/mastodon/features/compose/components/compose_form.js
index 47e189251c9..8af806ec437 100644
--- a/app/javascript/mastodon/features/compose/components/compose_form.js
+++ b/app/javascript/mastodon/features/compose/components/compose_form.js
@@ -77,6 +77,18 @@ class ComposeForm extends ImmutablePureComponent {
}
}
+ getFulltextForCharacterCounting = () => {
+ return [this.props.spoiler? this.props.spoilerText: '', countableText(this.props.text)].join('');
+ }
+
+ canSubmit = () => {
+ const { isSubmitting, isChangingUpload, isUploading, anyMedia } = this.props;
+ const fulltext = this.getFulltextForCharacterCounting();
+ const isOnlyWhitespace = fulltext.length !== 0 && fulltext.trim().length === 0;
+
+ return !(isSubmitting || isUploading || isChangingUpload || length(fulltext) > 500 || (isOnlyWhitespace && !anyMedia));
+ }
+
handleSubmit = () => {
if (this.props.text !== this.autosuggestTextarea.textarea.value) {
// Something changed the text inside the textarea (e.g. browser extensions like Grammarly)
@@ -84,11 +96,7 @@ class ComposeForm extends ImmutablePureComponent {
this.props.onChange(this.autosuggestTextarea.textarea.value);
}
- // Submit disabled:
- const { isSubmitting, isChangingUpload, isUploading, anyMedia } = this.props;
- const fulltext = [this.props.spoilerText, countableText(this.props.text)].join('');
-
- if (isSubmitting || isUploading || isChangingUpload || length(fulltext) > 500 || (fulltext.length !== 0 && fulltext.trim().length === 0 && !anyMedia)) {
+ if (!this.canSubmit()) {
return;
}
@@ -178,10 +186,8 @@ class ComposeForm extends ImmutablePureComponent {
}
render () {
- const { intl, onPaste, showSearch, anyMedia } = this.props;
+ const { intl, onPaste, showSearch } = this.props;
const disabled = this.props.isSubmitting;
- const text = [this.props.spoilerText, countableText(this.props.text)].join('');
- const disabledButton = disabled || this.props.isUploading || this.props.isChangingUpload || length(text) > 500 || (text.length !== 0 && text.trim().length === 0 && !anyMedia);
let publishText = '';
if (this.props.privacy === 'private' || this.props.privacy === 'direct') {
@@ -243,11 +249,11 @@ class ComposeForm extends ImmutablePureComponent {
<PrivacyDropdownContainer />
<SpoilerButtonContainer />
</div>
- <div className='character-counter__wrapper'><CharacterCounter max={500} text={text} /></div>
+ <div className='character-counter__wrapper'><CharacterCounter max={500} text={this.getFulltextForCharacterCounting()} /></div>
</div>
<div className='compose-form__publish'>
- <div className='compose-form__publish-button-wrapper'><Button text={publishText} onClick={this.handleSubmit} disabled={disabledButton} block /></div>
+ <div className='compose-form__publish-button-wrapper'><Button text={publishText} onClick={this.handleSubmit} disabled={!this.canSubmit()} block /></div>
</div>
</div>
);