module Jobs

  class CreateThumbnails < Jobs::Base

    def execute(args)
      upload_id = args[:upload_id]
      type = args[:type]

      raise Discourse::InvalidParameters.new(:upload_id) if upload_id.blank?
      raise Discourse::InvalidParameters.new(:type) if type.blank?

      # only need to generate thumbnails for avatars
      return if type != "avatar"

      upload = Upload.find(upload_id)

      self.send("create_thumbnails_for_#{type}", upload)
    end

    PIXELS ||= [1, 2]

    def create_thumbnails_for_avatar(upload)
      PIXELS.each do |pixel|
        Discourse.avatar_sizes.each do |size|
          size *= pixel
          upload.create_thumbnail!(size, size, SiteSetting.allow_animated_avatars)
        end
      end
    end

  end

end