require 'enum_site_setting'

class EmojiSetSiteSetting < EnumSiteSetting

  # fix the URLs when changing the site setting
  DiscourseEvent.on(:site_setting_saved) do |site_setting|
    if site_setting.name.to_s == "emoji_set" && site_setting.value_changed?
      Emoji.clear_cache

      previous_value = site_setting.attribute_in_database(:value) || SiteSetting.defaults[:emoji_set]
      before = "/images/emoji/#{previous_value}/"
      after = "/images/emoji/#{site_setting.value}/"

      Scheduler::Defer.later("Fix Emoji Links") do
        DB.exec("UPDATE posts SET cooked = REPLACE(cooked, :before, :after) WHERE cooked LIKE :like",
          before: before,
          after: after,
          like: "%#{before}%"
        )
      end
    end
  end

  def self.valid_value?(val)
    values.any? { |v| v[:value] == val.to_s }
  end

  def self.values
    @values ||= [
      { name: 'emoji_set.apple_international', value: 'apple' },
      { name: 'emoji_set.google', value: 'google' },
      { name: 'emoji_set.twitter', value: 'twitter' },
      { name: 'emoji_set.emoji_one', value: 'emoji_one' },
      { name: 'emoji_set.win10', value: 'win10' },
      { name: 'emoji_set.google_classic', value: 'google_classic' },
      { name: 'emoji_set.facebook_messenger', value: 'facebook_messenger' },
    ]
  end

  def self.translate_names?
    true
  end

end