From 2710525d0148674a516adcdecde6ef4a2f5b7485 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9gis=20Hanol?= Date: Thu, 17 Nov 2016 23:28:27 +0100 Subject: [PATCH] FIX: custom emojis leaking over multisite - take 2 --- app/assets/javascripts/pretty-text/emoji.js.es6 | 9 ++++++--- .../engines/discourse-markdown/emoji.js.es6 | 10 +++++----- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/app/assets/javascripts/pretty-text/emoji.js.es6 b/app/assets/javascripts/pretty-text/emoji.js.es6 index fe68c164225..67f047dc01d 100644 --- a/app/assets/javascripts/pretty-text/emoji.js.es6 +++ b/app/assets/javascripts/pretty-text/emoji.js.es6 @@ -35,7 +35,7 @@ export function performEmojiUnescape(string, opts) { const emojiVal = isEmoticon ? translations[m] : m.slice(1, m.length - 1); const hasEndingColon = m.lastIndexOf(":") === m.length - 1; const url = buildEmojiUrl(emojiVal, opts); - const classes = isCustomEmoji(emojiVal) ? "emoji emoji-custom" : "emoji"; + const classes = isCustomEmoji(emojiVal, opts) ? "emoji emoji-custom" : "emoji"; return url && (isEmoticon || hasEndingColon) ? `${emojiVal}` : m; @@ -45,8 +45,11 @@ export function performEmojiUnescape(string, opts) { return string; } -export function isCustomEmoji(code) { - return extendedEmoji.hasOwnProperty(code.toLowerCase()); +export function isCustomEmoji(code, opts) { + code = code.toLowerCase(); + if (extendedEmoji.hasOwnProperty(code)) return true; + if (opts && opts.customEmoji && opts.customEmoji.hasOwnProperty(code)) return true; + return false; } export function buildEmojiUrl(code, opts) { diff --git a/app/assets/javascripts/pretty-text/engines/discourse-markdown/emoji.js.es6 b/app/assets/javascripts/pretty-text/engines/discourse-markdown/emoji.js.es6 index e2ed8900303..20577a97ad5 100644 --- a/app/assets/javascripts/pretty-text/engines/discourse-markdown/emoji.js.es6 +++ b/app/assets/javascripts/pretty-text/engines/discourse-markdown/emoji.js.es6 @@ -1,5 +1,5 @@ import { registerOption } from 'pretty-text/pretty-text'; -import { registerEmoji, buildEmojiUrl, isCustomEmoji } from 'pretty-text/emoji'; +import { buildEmojiUrl, isCustomEmoji } from 'pretty-text/emoji'; import { translations } from 'pretty-text/emoji/data'; let _unicodeReplacements; @@ -29,7 +29,7 @@ function checkPrev(prev) { registerOption((siteSettings, opts, state) => { opts.features.emoji = !!siteSettings.enable_emoji; opts.emojiSet = siteSettings.emoji_set || ""; - _(state.customEmoji).each((url, name) => registerEmoji(name, url)); + opts.customEmoji = state.customEmoji; }); export function setup(helper) { @@ -38,11 +38,11 @@ export function setup(helper) { function imageFor(code) { code = code.toLowerCase(); - const options = helper.getOptions(); - const url = buildEmojiUrl(code, options); + const opts = helper.getOptions(); + const url = buildEmojiUrl(code, opts); if (url) { const title = `:${code}:`; - const classes = isCustomEmoji(code) ? "emoji emoji-custom" : "emoji"; + const classes = isCustomEmoji(code, opts) ? "emoji emoji-custom" : "emoji"; return ['img', { href: url, title, 'class': classes, alt: title }]; } }