From fee654f1eee276a1d30c8fcb2699e567fc281967 Mon Sep 17 00:00:00 2001 From: Dym Sohin Date: Mon, 21 Sep 2020 17:29:36 +0200 Subject: [PATCH 1/4] feat/reorder-emojis-by-position-of-keyword --- src/components/emoji_picker/emoji_picker.js | 13 ++++++++++--- src/components/react_button/react_button.js | 11 ++++++++--- 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/src/components/emoji_picker/emoji_picker.js b/src/components/emoji_picker/emoji_picker.js index 5c09f6ca..713ecd8b 100644 --- a/src/components/emoji_picker/emoji_picker.js +++ b/src/components/emoji_picker/emoji_picker.js @@ -8,10 +8,17 @@ const LOAD_EMOJI_BY = 60 const LOAD_EMOJI_MARGIN = 64 const filterByKeyword = (list, keyword = '') => { + if (keyword === '') return list + const keywordLowercase = keyword.toLowerCase() - return list.filter(emoji => - emoji.displayText.toLowerCase().includes(keywordLowercase) - ) + const orderedEmojiList = [] + for (const emoji of list) { + const indexOfKeyword = emoji.displayText.toLowerCase().indexOf( keywordLowercase ) + if ( indexOfKeyword > -1 ) { + orderedEmojiList.splice(indexOfKeyword, 0, emoji) + } + } + return orderedEmojiList } const EmojiPicker = { diff --git a/src/components/react_button/react_button.js b/src/components/react_button/react_button.js index abcf0455..473a2506 100644 --- a/src/components/react_button/react_button.js +++ b/src/components/react_button/react_button.js @@ -29,9 +29,14 @@ const ReactButton = { emojis () { if (this.filterWord !== '') { const filterWordLowercase = this.filterWord.toLowerCase() - return this.$store.state.instance.emoji.filter(emoji => - emoji.displayText.toLowerCase().includes(filterWordLowercase) - ) + const 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) + } + } + return orderedEmojiList } return this.$store.state.instance.emoji || [] }, From f1e1f20a8d89abf7920997c12d5c7b48cdb2d628 Mon Sep 17 00:00:00 2001 From: Dym Sohin Date: Mon, 21 Sep 2020 17:42:17 +0200 Subject: [PATCH 2/4] fix 8x spaces inside this paren --- src/components/emoji_picker/emoji_picker.js | 4 ++-- src/components/react_button/react_button.js | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/components/emoji_picker/emoji_picker.js b/src/components/emoji_picker/emoji_picker.js index 713ecd8b..28ab0376 100644 --- a/src/components/emoji_picker/emoji_picker.js +++ b/src/components/emoji_picker/emoji_picker.js @@ -13,8 +13,8 @@ const filterByKeyword = (list, keyword = '') => { const keywordLowercase = keyword.toLowerCase() const orderedEmojiList = [] for (const emoji of list) { - const indexOfKeyword = emoji.displayText.toLowerCase().indexOf( keywordLowercase ) - if ( indexOfKeyword > -1 ) { + const indexOfKeyword = emoji.displayText.toLowerCase().indexOf(keywordLowercase) + if (indexOfKeyword > -1) { orderedEmojiList.splice(indexOfKeyword, 0, emoji) } } diff --git a/src/components/react_button/react_button.js b/src/components/react_button/react_button.js index 473a2506..28ce884a 100644 --- a/src/components/react_button/react_button.js +++ b/src/components/react_button/react_button.js @@ -31,8 +31,8 @@ const ReactButton = { const filterWordLowercase = this.filterWord.toLowerCase() const orderedEmojiList = [] for (const emoji of this.$store.state.instance.emoji) { - const indexOfFilterWord = emoji.displayText.toLowerCase().indexOf( filterWordLowercase ) - if ( indexOfFilterWord > -1 ) { + const indexOfFilterWord = emoji.displayText.toLowerCase().indexOf(filterWordLowercase) + if (indexOfFilterWord > -1) { orderedEmojiList.splice(indexOfFilterWord, 0, emoji) } } From cff202241b6eff8f6b381866e00a0392080d05a2 Mon Sep 17 00:00:00 2001 From: Dym Sohin Date: Mon, 21 Sep 2020 18:10:55 +0200 Subject: [PATCH 3/4] 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 || [] }, From bb59b8ee56f8c5c89720c9a42037a730caba4d11 Mon Sep 17 00:00:00 2001 From: Dym Sohin Date: Mon, 21 Sep 2020 18:13:31 +0200 Subject: [PATCH 4/4] fixed copy-pasting leftovers --- src/components/emoji_picker/emoji_picker.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/components/emoji_picker/emoji_picker.js b/src/components/emoji_picker/emoji_picker.js index 29c559df..3ad80df3 100644 --- a/src/components/emoji_picker/emoji_picker.js +++ b/src/components/emoji_picker/emoji_picker.js @@ -15,10 +15,10 @@ const filterByKeyword = (list, keyword = '') => { for (const emoji of list) { const indexOfKeyword = emoji.displayText.toLowerCase().indexOf(keywordLowercase) if (indexOfKeyword > -1) { - if (!Array.isArray(orderedEmojiList[keywordLowercase])) { - orderedEmojiList[keywordLowercase] = [] + if (!Array.isArray(orderedEmojiList[indexOfKeyword])) { + orderedEmojiList[indexOfKeyword] = [] } - orderedEmojiList[keywordLowercase].push(emoji) + orderedEmojiList[indexOfKeyword].push(emoji) } } return orderedEmojiList.flat()