Merge pull request #223 from glitch-soc/glitchsoc/feature/configurable-status-size
Make character limit configurable (from tootsuite/mastodon#5697)
This commit is contained in:
		
						commit
						61585f2c42
					
				
					 5 changed files with 20 additions and 5 deletions
				
			
		|  | @ -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 | ||||
|  |  | |||
|  | @ -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 ? | ||||
|  |  | |||
|  | @ -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 | ||||
|  |  | |||
|  | @ -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, | ||||
|  |  | |||
|  | @ -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? | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue