aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorxenofem <xenofem@xeno.science>2020-02-09 17:25:24 -0500
committerxenofem <xenofem@xeno.science>2020-02-09 17:39:07 -0500
commit44dea9f3646a5c27083dfe6cd6b1522e11c7dc69 (patch)
treea75d9dc58d0665cbaf358fbce70a4fc58c8c244c /src
parent8fcb9c42aad9e623287c26244f079fc5028c6359 (diff)
Allow emoji suggestions based on a match anywhere in the emoji name, but improve sorting
Diffstat (limited to 'src')
-rw-r--r--src/components/emoji_input/suggestor.js16
1 files changed, 10 insertions, 6 deletions
diff --git a/src/components/emoji_input/suggestor.js b/src/components/emoji_input/suggestor.js
index aec5c39d..9e437ccc 100644
--- a/src/components/emoji_input/suggestor.js
+++ b/src/components/emoji_input/suggestor.js
@@ -29,17 +29,21 @@ export default data => input => {
export const suggestEmoji = emojis => input => {
const noPrefix = input.toLowerCase().substr(1)
return emojis
- .filter(({ displayText }) => displayText.toLowerCase().startsWith(noPrefix))
+ .filter(({ displayText }) => displayText.toLowerCase().match(noPrefix))
.sort((a, b) => {
let aScore = 0
let bScore = 0
- // Make custom emojis a priority
- aScore += a.imageUrl ? 10 : 0
- bScore += b.imageUrl ? 10 : 0
+ // Prioritize emoji that start with the input string
+ aScore += a.displayText.toLowerCase().startsWith(noPrefix) ? 10 : 0
+ bScore += b.displayText.toLowerCase().startsWith(noPrefix) ? 10 : 0
- // Sort alphabetically
- const alphabetically = a.displayText > b.displayText ? 1 : -1
+ // Sort by length
+ aScore -= a.displayText.length
+ bScore -= b.displayText.length
+
+ // Break ties alphabetically
+ const alphabetically = a.displayText > b.displayText ? 0.5 : -0.5
return bScore - aScore + alphabetically
})