From cff202241b6eff8f6b381866e00a0392080d05a2 Mon Sep 17 00:00:00 2001
From: Dym Sohin <re@dym.sh>
Date: Mon, 21 Sep 2020 18:10:55 +0200
Subject: [PATCH] improved algorithm, possibly speed too

---
 src/components/emoji_picker/emoji_picker.js | 9 ++++++---
 src/components/react_button/react_button.js | 9 ++++++---
 2 files changed, 12 insertions(+), 6 deletions(-)

diff --git a/src/components/emoji_picker/emoji_picker.js b/src/components/emoji_picker/emoji_picker.js
index 28ab0376..29c559df 100644
--- a/src/components/emoji_picker/emoji_picker.js
+++ b/src/components/emoji_picker/emoji_picker.js
@@ -11,14 +11,17 @@ const filterByKeyword = (list, keyword = '') => {
   if (keyword === '') return list
 
   const keywordLowercase = keyword.toLowerCase()
-  const orderedEmojiList = []
+  let orderedEmojiList = []
   for (const emoji of list) {
     const indexOfKeyword = emoji.displayText.toLowerCase().indexOf(keywordLowercase)
     if (indexOfKeyword > -1) {
-      orderedEmojiList.splice(indexOfKeyword, 0, emoji)
+      if (!Array.isArray(orderedEmojiList[keywordLowercase])) {
+        orderedEmojiList[keywordLowercase] = []
+      }
+      orderedEmojiList[keywordLowercase].push(emoji)
     }
   }
-  return orderedEmojiList
+  return orderedEmojiList.flat()
 }
 
 const EmojiPicker = {
diff --git a/src/components/react_button/react_button.js b/src/components/react_button/react_button.js
index 28ce884a..16014405 100644
--- a/src/components/react_button/react_button.js
+++ b/src/components/react_button/react_button.js
@@ -29,14 +29,17 @@ const ReactButton = {
     emojis () {
       if (this.filterWord !== '') {
         const filterWordLowercase = this.filterWord.toLowerCase()
-        const orderedEmojiList = []
+        let orderedEmojiList = []
         for (const emoji of this.$store.state.instance.emoji) {
           const indexOfFilterWord = emoji.displayText.toLowerCase().indexOf(filterWordLowercase)
           if (indexOfFilterWord > -1) {
-            orderedEmojiList.splice(indexOfFilterWord, 0, emoji)
+            if (!Array.isArray(orderedEmojiList[indexOfFilterWord])) {
+              orderedEmojiList[indexOfFilterWord] = []
+            }
+            orderedEmojiList[indexOfFilterWord].push(emoji)
           }
         }
-        return orderedEmojiList
+        return orderedEmojiList.flat()
       }
       return this.$store.state.instance.emoji || []
     },