about summary refs log tree commit diff
path: root/app/validators/disallowed_hashtags_validator.rb
blob: d745b767f6d937c095416483b969f1c771304c92 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
# frozen_string_literal: true

class DisallowedHashtagsValidator < ActiveModel::Validator
  def validate(status)
    return unless status.local? && !status.reblog?

    disallowed_hashtags = Tag.matching_name(Extractor.extract_hashtags(status.text)).reject(&:usable?)
    status.errors.add(:text, I18n.t('statuses.disallowed_hashtags', tags: disallowed_hashtags.map(&:name).join(', '), count: disallowed_hashtags.size)) unless disallowed_hashtags.empty?
  end
end