diff options
author | beatrix <beatrix.bitrot@gmail.com> | 2017-11-17 19:02:40 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-11-17 19:02:40 -0500 |
commit | 5a9982b425d3db65d813eb0314a27cea16f0f52d (patch) | |
tree | eabdb52c5d75421876397720b5b79e270ea705e9 | |
parent | 284e2cde81811d6289dde9542f9c987062f9e7c2 (diff) | |
parent | dc16d73bf5f3e7db54e4f21848f40cff3d9172ca (diff) |
Merge pull request #223 from glitch-soc/glitchsoc/feature/configurable-status-size
Make character limit configurable (from tootsuite/mastodon#5697)
-rw-r--r-- | .env.production.sample | 3 | ||||
-rw-r--r-- | app/javascript/mastodon/features/compose/components/compose_form.js | 7 | ||||
-rw-r--r-- | app/serializers/initial_state_serializer.rb | 7 | ||||
-rw-r--r-- | app/serializers/rest/instance_serializer.rb | 6 | ||||
-rw-r--r-- | app/validators/status_length_validator.rb | 2 |
5 files changed, 20 insertions, 5 deletions
diff --git a/.env.production.sample b/.env.production.sample index 91fcce6ac..27de27de4 100644 --- a/.env.production.sample +++ b/.env.production.sample @@ -134,3 +134,6 @@ STREAMING_CLUSTER_NUM=1 # If you use Docker, you may want to assign UID/GID manually. # UID=1000 # GID=1000 + +# Maximum allowed character count +# MAX_TOOT_CHARS=500 diff --git a/app/javascript/mastodon/features/compose/components/compose_form.js b/app/javascript/mastodon/features/compose/components/compose_form.js index 13a41f23f..aaca45493 100644 --- a/app/javascript/mastodon/features/compose/components/compose_form.js +++ b/app/javascript/mastodon/features/compose/components/compose_form.js @@ -19,6 +19,9 @@ import ImmutablePureComponent from 'react-immutable-pure-component'; import { length } from 'stringz'; import { countableText } from '../util/counter'; import ComposeAttachOptions from '../../../../glitch/components/compose/attach_options/index'; +import initialState from '../../../initial_state'; + +const maxChars = initialState.max_toot_chars; const messages = defineMessages({ placeholder: { id: 'compose_form.placeholder', defaultMessage: 'What is on your mind?' }, @@ -205,7 +208,7 @@ export default class ComposeForm extends ImmutablePureComponent { } } - const submitDisabled = disabled || this.props.is_uploading || length(text) > 500 || (text.length !== 0 && text.trim().length === 0); + const submitDisabled = disabled || this.props.is_uploading || length(text) > maxChars || (text.length !== 0 && text.trim().length === 0); return ( <div className='compose-form'> @@ -255,7 +258,7 @@ export default class ComposeForm extends ImmutablePureComponent { </div> <div className='compose-form__publish'> - <div className='character-counter__wrapper'><CharacterCounter max={500} text={text} /></div> + <div className='character-counter__wrapper'><CharacterCounter max={maxChars} text={text} /></div> <div className='compose-form__publish-button-wrapper'> { showSideArm ? diff --git a/app/serializers/initial_state_serializer.rb b/app/serializers/initial_state_serializer.rb index 787c5add3..9dfa019f5 100644 --- a/app/serializers/initial_state_serializer.rb +++ b/app/serializers/initial_state_serializer.rb @@ -2,10 +2,15 @@ class InitialStateSerializer < ActiveModel::Serializer attributes :meta, :compose, :accounts, - :media_attachments, :settings, :push_subscription + :media_attachments, :settings, :push_subscription, + :max_toot_chars has_many :custom_emojis, serializer: REST::CustomEmojiSerializer + def max_toot_chars + StatusLengthValidator::MAX_CHARS + end + def custom_emojis CustomEmoji.local.where(disabled: false) end diff --git a/app/serializers/rest/instance_serializer.rb b/app/serializers/rest/instance_serializer.rb index 2898011fd..abbacc374 100644 --- a/app/serializers/rest/instance_serializer.rb +++ b/app/serializers/rest/instance_serializer.rb @@ -4,7 +4,7 @@ class REST::InstanceSerializer < ActiveModel::Serializer include RoutingHelper attributes :uri, :title, :description, :email, - :version, :urls, :stats, :thumbnail + :version, :urls, :stats, :thumbnail, :max_toot_chars def uri Rails.configuration.x.local_domain @@ -30,6 +30,10 @@ class REST::InstanceSerializer < ActiveModel::Serializer full_asset_url(instance_presenter.thumbnail.file.url) if instance_presenter.thumbnail end + def max_toot_chars + StatusLengthValidator::MAX_CHARS + end + def stats { user_count: instance_presenter.user_count, diff --git a/app/validators/status_length_validator.rb b/app/validators/status_length_validator.rb index 2ce5d1ee9..79d17742a 100644 --- a/app/validators/status_length_validator.rb +++ b/app/validators/status_length_validator.rb @@ -1,7 +1,7 @@ # frozen_string_literal: true class StatusLengthValidator < ActiveModel::Validator - MAX_CHARS = 512 + MAX_CHARS = (ENV['MAX_TOOT_CHARS'] || 500).to_i def validate(status) return unless status.local? && !status.reblog? |