Class: Admin::EmojisController

Inherits:
AdminController
  • Object
show all
Defined in:
app/controllers/admin/emojis_controller.rb

Instance Method Summary collapse

Instance Method Details

#createObject

TODO (martin) Figure out a way that this kind of custom logic can be run in the ExternalUploadManager when a direct S3 upload is completed, related to preventDirectS3Uploads in the UppyUploadMixin.



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# File 'app/controllers/admin/emojis_controller.rb', line 11

def create
  file = params[:file] || params[:files].first
  name = params[:name] || File.basename(file.original_filename, ".*")
  group = params[:group] ? params[:group].downcase : nil

  hijack do
    # fix the name
    name = File.basename(name, ".*")
    name = name.gsub(/[^a-z0-9]+/i, "_").gsub(/_{2,}/, "_").downcase

    upload =
      UploadCreator.new(file.tempfile, file.original_filename, type: "custom_emoji").create_for(
        current_user.id,
      )

    good = true

    data =
      if upload.persisted?
        custom_emoji = CustomEmoji.new(name: name, upload: upload, group: group)

        if custom_emoji.save
          Emoji.clear_cache
          { name: custom_emoji.name, url: custom_emoji.upload.url, group: group }
        else
          good = false
          failed_json.merge(errors: custom_emoji.errors.full_messages)
        end
      else
        good = false
        failed_json.merge(errors: upload.errors.full_messages)
      end

    render json: data.as_json, status: good ? 200 : 422
  end
end

#destroyObject



48
49
50
51
52
53
54
55
56
57
58
59
# File 'app/controllers/admin/emojis_controller.rb', line 48

def destroy
  name = params.require(:id)

  # NOTE: the upload will automatically be removed by the 'clean_up_uploads' job
  CustomEmoji.find_by(name: name)&.destroy!

  Emoji.clear_cache

  Jobs.enqueue(:rebake_custom_emoji_posts, name: name)

  render json: success_json
end

#indexObject



4
5
6
# File 'app/controllers/admin/emojis_controller.rb', line 4

def index
  render_serialized(Emoji.custom, EmojiSerializer, root: false)
end