about summary refs log tree commit diff
path: root/app/javascript/flavours/glitch/reducers/accounts.js
diff options
context:
space:
mode:
authorThibaut Girka <thib@sitedethib.com>2018-05-17 15:57:16 +0200
committerThibaut Girka <thib@sitedethib.com>2018-05-17 15:57:16 +0200
commit52b2f18b150607f20c246a17ba188c8e78153e35 (patch)
tree6830dd3f894d9f386445b09770f23af9eb346a25 /app/javascript/flavours/glitch/reducers/accounts.js
parent4bf43e6f3e93643d989a2872763b41505fab2206 (diff)
[Glitch] Enable custom emojis in profiles
Port 61a90186070395e133ad2f8e959bdf003a8615ca to glitch-soc
Diffstat (limited to 'app/javascript/flavours/glitch/reducers/accounts.js')
-rw-r--r--app/javascript/flavours/glitch/reducers/accounts.js12
1 files changed, 9 insertions, 3 deletions
diff --git a/app/javascript/flavours/glitch/reducers/accounts.js b/app/javascript/flavours/glitch/reducers/accounts.js
index e8127a871..86f4970c9 100644
--- a/app/javascript/flavours/glitch/reducers/accounts.js
+++ b/app/javascript/flavours/glitch/reducers/accounts.js
@@ -59,6 +59,11 @@ import { Map as ImmutableMap, fromJS } from 'immutable';
 import escapeTextContentForBrowser from 'escape-html';
 import { unescapeHTML } from 'flavours/glitch/util/html';
 
+const makeEmojiMap = record => record.emojis.reduce((obj, emoji) => {
+  obj[`:${emoji.shortcode}:`] = emoji;
+  return obj;
+}, {});
+
 const normalizeAccount = (state, account) => {
   account = { ...account };
 
@@ -66,15 +71,16 @@ const normalizeAccount = (state, account) => {
   delete account.following_count;
   delete account.statuses_count;
 
+  const emojiMap = makeEmojiMap(account);
   const displayName = account.display_name.length === 0 ? account.username : account.display_name;
-  account.display_name_html = emojify(escapeTextContentForBrowser(displayName));
-  account.note_emojified = emojify(account.note);
+  account.display_name_html = emojify(escapeTextContentForBrowser(displayName), emojiMap);
+  account.note_emojified = emojify(account.note, emojiMap);
 
   if (account.fields) {
     account.fields = account.fields.map(pair => ({
       ...pair,
       name_emojified: emojify(escapeTextContentForBrowser(pair.name)),
-      value_emojified: emojify(pair.value),
+      value_emojified: emojify(pair.value, emojiMap),
       value_plain: unescapeHTML(pair.value),
     }));
   }