about summary refs log tree commit diff
path: root/app/javascript/flavours/glitch/util/emoji/emoji_mart_search_light.js
diff options
context:
space:
mode:
Diffstat (limited to 'app/javascript/flavours/glitch/util/emoji/emoji_mart_search_light.js')
-rw-r--r--app/javascript/flavours/glitch/util/emoji/emoji_mart_search_light.js20
1 files changed, 18 insertions, 2 deletions
diff --git a/app/javascript/flavours/glitch/util/emoji/emoji_mart_search_light.js b/app/javascript/flavours/glitch/util/emoji/emoji_mart_search_light.js
index 5755bf1c4..bf511d290 100644
--- a/app/javascript/flavours/glitch/util/emoji/emoji_mart_search_light.js
+++ b/app/javascript/flavours/glitch/util/emoji/emoji_mart_search_light.js
@@ -8,6 +8,7 @@ let originalPool = {};
 let index = {};
 let emojisList = {};
 let emoticonsList = {};
+let customEmojisList = [];
 
 for (let emoji in data.emojis) {
   let emojiData = data.emojis[emoji];
@@ -28,7 +29,18 @@ for (let emoji in data.emojis) {
   originalPool[id] = emojiData;
 }
 
+function clearCustomEmojis(pool) {
+  customEmojisList.forEach((emoji) => {
+    let emojiId = emoji.id || emoji.short_names[0];
+
+    delete pool[emojiId];
+    delete emojisList[emojiId];
+  });
+}
+
 function addCustomToPool(custom, pool) {
+  if (customEmojisList.length) clearCustomEmojis(pool);
+
   custom.forEach((emoji) => {
     let emojiId = emoji.id || emoji.short_names[0];
 
@@ -37,10 +49,14 @@ function addCustomToPool(custom, pool) {
       emojisList[emojiId] = getSanitizedData(emoji);
     }
   });
+
+  customEmojisList = custom;
+  index = {};
 }
 
 function search(value, { emojisToShowFilter, maxResults, include, exclude, custom = [] } = {}) {
-  addCustomToPool(custom, originalPool);
+  if (customEmojisList !== custom)
+    addCustomToPool(custom, originalPool);
 
   maxResults = maxResults || 75;
   include = include || [];
@@ -143,7 +159,7 @@ function search(value, { emojisToShowFilter, maxResults, include, exclude, custo
 
   if (results) {
     if (emojisToShowFilter) {
-      results = results.filter((result) => emojisToShowFilter(data.emojis[result.id].unified));
+      results = results.filter((result) => emojisToShowFilter(data.emojis[result.id]));
     }
 
     if (results && results.length > maxResults) {