Browse Source
The goal here isn't to prevent these hashtags from existing, but just to strongly curtail their usage; The hashtags may still exist in the database via federated status, or from being created prior to this feature.custom

committed by
Eugen Rochko

4 changed files with 27 additions and 0 deletions
@ -0,0 +1,22 @@ |
|||
# frozen_string_literal: true |
|||
|
|||
class DisallowedHashtagsValidator < ActiveModel::Validator |
|||
def validate(status) |
|||
return unless status.local? && !status.reblog? |
|||
|
|||
tags = Extractor.extract_hashtags(status.text) |
|||
tags.keep_if { |tag| disallowed_hashtags.include? tag.downcase } |
|||
|
|||
status.errors.add(:text, I18n.t('statuses.disallowed_hashtags', tags: tags.join(', '), count: tags.size)) unless tags.empty? |
|||
end |
|||
|
|||
private |
|||
|
|||
def disallowed_hashtags |
|||
return @disallowed_hashtags if @disallowed_hashtags |
|||
|
|||
@disallowed_hashtags = Setting.disallowed_hashtags.nil? ? [] : Setting.disallowed_hashtags |
|||
@disallowed_hashtags = @disallowed_hashtags.split(' ') if @disallowed_hashtags.is_a? String |
|||
@disallowed_hashtags = @disallowed_hashtags.map(&:downcase) |
|||
end |
|||
end |
Loading…
Reference in new issue