about summary refs log tree commit diff
path: root/app
diff options
context:
space:
mode:
authorEugen Rochko <eugen@zeonfederated.com>2017-10-05 23:41:47 +0200
committerGitHub <noreply@github.com>2017-10-05 23:41:47 +0200
commitb9c76e2edbc372e1b472f6ba480631b79fe24722 (patch)
tree86938e4c82781404d8adfde2555e1c26b77209b4 /app
parent2559d9166cea24fceb9b72ca112804811d87a4a8 (diff)
When processing custom emoji, ensure a non-animated version exists (#5230)
Use the non-animated version in web UI, but return both in API
Diffstat (limited to 'app')
-rw-r--r--app/javascript/mastodon/emoji.js2
-rw-r--r--app/javascript/mastodon/reducers/statuses.js2
-rw-r--r--app/lib/formatter.rb2
-rw-r--r--app/models/custom_emoji.rb2
-rw-r--r--app/serializers/rest/custom_emoji_serializer.rb6
5 files changed, 9 insertions, 5 deletions
diff --git a/app/javascript/mastodon/emoji.js b/app/javascript/mastodon/emoji.js
index 1df2373d9..cf0077958 100644
--- a/app/javascript/mastodon/emoji.js
+++ b/app/javascript/mastodon/emoji.js
@@ -52,7 +52,7 @@ export const buildCustomEmojis = customEmojis => {
 
   customEmojis.forEach(emoji => {
     const shortcode = emoji.get('shortcode');
-    const url       = emoji.get('url');
+    const url       = emoji.get('static_url');
     const name      = shortcode.replace(':', '');
 
     emojis.push({
diff --git a/app/javascript/mastodon/reducers/statuses.js b/app/javascript/mastodon/reducers/statuses.js
index 2d72b12e8..ed16e016f 100644
--- a/app/javascript/mastodon/reducers/statuses.js
+++ b/app/javascript/mastodon/reducers/statuses.js
@@ -60,7 +60,7 @@ const normalizeStatus = (state, status) => {
 
   const searchContent = [status.spoiler_text, status.content].join(' ').replace(/<br \/>/g, '\n').replace(/<\/p><p>/g, '\n\n');
   const emojiMap = normalStatus.emojis.reduce((obj, emoji) => {
-    obj[`:${emoji.shortcode}:`] = emoji.url;
+    obj[`:${emoji.shortcode}:`] = emoji.static_url;
     return obj;
   }, {});
 
diff --git a/app/lib/formatter.rb b/app/lib/formatter.rb
index 42cd72990..d7f6ec47b 100644
--- a/app/lib/formatter.rb
+++ b/app/lib/formatter.rb
@@ -92,7 +92,7 @@ class Formatter
   def encode_custom_emojis(html, emojis)
     return html if emojis.empty?
 
-    emoji_map = emojis.map { |e| [e.shortcode, full_asset_url(e.image.url)] }.to_h
+    emoji_map = emojis.map { |e| [e.shortcode, full_asset_url(e.image.url(:static))] }.to_h
 
     i                     = -1
     inside_tag            = false
diff --git a/app/models/custom_emoji.rb b/app/models/custom_emoji.rb
index e80c58155..9e9be5e12 100644
--- a/app/models/custom_emoji.rb
+++ b/app/models/custom_emoji.rb
@@ -21,7 +21,7 @@ class CustomEmoji < ApplicationRecord
     :(#{SHORTCODE_RE_FRAGMENT}):
     (?=[^[:alnum:]:]|$)/x
 
-  has_attached_file :image
+  has_attached_file :image, styles: { static: { format: 'png', convert_options: '-coalesce -strip' } }
 
   validates_attachment :image, content_type: { content_type: 'image/png' }, presence: true, size: { in: 0..50.kilobytes }
   validates :shortcode, uniqueness: { scope: :domain }, format: { with: /\A#{SHORTCODE_RE_FRAGMENT}\z/ }, length: { minimum: 2 }
diff --git a/app/serializers/rest/custom_emoji_serializer.rb b/app/serializers/rest/custom_emoji_serializer.rb
index b744dd4ec..b958e6a5d 100644
--- a/app/serializers/rest/custom_emoji_serializer.rb
+++ b/app/serializers/rest/custom_emoji_serializer.rb
@@ -3,9 +3,13 @@
 class REST::CustomEmojiSerializer < ActiveModel::Serializer
   include RoutingHelper
 
-  attributes :shortcode, :url
+  attributes :shortcode, :url, :static_url
 
   def url
     full_asset_url(object.image.url)
   end
+
+  def static_url
+    full_asset_url(object.image.url(:static))
+  end
 end