module Jobs

  class CreateThumbnails < Jobs::Base

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

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

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

      upload = Upload.find(upload_id)

      user_id = args[:user_id] || upload.user_id
      user = User.find(user_id)

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

    def create_thumbnails_for_avatar(upload, user)
      Discourse.avatar_sizes.each do |size|
        OptimizedImage.create_for(
          upload,
          size,
          size,
          filename: upload.original_filename,
          allow_animation: SiteSetting.allow_animated_avatars
        )
      end
    end

  end

end