修改长毛象实例的字数上限

发布于 2021-09-15  670 次阅读


居然不能直接设置,蠢死了。

修改字数上限

总之需要直接改代码。

编辑app/javascript/mastodon/features/compose/components/compose_form.js并修改<div className='character-counter__wrapper'><CharacterCounter max={500} text={text} /></div>部分以及<div className='compose-form__publish-button-wrapper'><Button text={publishText} onClick={this.handleSubmit} disabled={disabled || this.props.is_uploading || length(text) > 500 || (text.length !== 0 && text.trim().length === 0)} block /></div>部分。这是前端的相关逻辑。

编辑app/validators/status_length_validator.rb并修改class StatusLengthValidator < ActiveModel::Validator
MAX_CHARS = 500
部分。这是后端逻辑。

下面这部分似乎已经得到官方正式支持不用手动添加了

最后可以修改app/serializers/rest/instance_serializer.rb来让支持的第三方客户端正确显示修改后的字数。在registrations之后加入max_toot_chars,如下::languages, :registrations, :max_toot_chars,,然后定义max_toot_chars:

  def max_toot_chars
    StatusLengthValidator::MAX_CHARS
  end

全部修改完后rebuild(docker)或者precompile,重新运行即可。

参考链接

【Reddit】How do I customize character limits on my instance?

Howto raise the character limit?

设置超过一定字数强制CW

这个commit的基础上修改得来。

首先app/javascript/mastodon/features/compose/components/compose_form.js可以原样照搬。

app/validators/status_length_validator.rb中,加入MAX_UNCUT_CHARS = 777,判断逻辑使用status.errors.add(:text, I18n.t('statuses.over_uncut_character_limit', max: MAX_UNCUT_CHARS)) if too_long_uncut?,去掉最后的(status)。下面的几个def块也全都去掉(status)。最后在locales文件中添加over_uncut_character_limit: Please apply a CW to anything longer than %{max} characters.,中文也可以对应添加。


Sup