discourse/app/serializers/watched_word_list_serializer.rb
Bianca Nenciu 3a1b05f219
FIX: Make autotag watched words case insensitive (#13043)
* FIX: Hide tag watched words if tagging is disabled

These 'autotag' words were shown even if tagging was disabled.

* FIX: Make autotag watched words case insensitive

This commit also fixes the bug when no tag was applied if no other tag
was already present.
2021-05-14 16:52:10 +03:00

31 lines
815 B
Ruby

# frozen_string_literal: true
class WatchedWordListSerializer < ApplicationSerializer
attributes :actions, :words, :regular_expressions, :compiled_regular_expressions
def actions
SiteSetting.tagging_enabled ? WatchedWord.actions.keys
: WatchedWord.actions.keys.filter { |k| k != :tag }
end
def words
object.map do |word|
WatchedWordSerializer.new(word, root: false)
end
end
# No point making this site setting `client: true` when it's only used
# in the admin section
def regular_expressions
SiteSetting.watched_words_regular_expressions?
end
def compiled_regular_expressions
expressions = {}
actions.each do |action|
expressions[action] = WordWatcher.word_matcher_regexp(action)&.source
end
expressions
end
end