diff options
| author | xenofem <xenofem@xeno.science> | 2020-02-09 17:25:24 -0500 |
|---|---|---|
| committer | xenofem <xenofem@xeno.science> | 2020-02-09 17:39:07 -0500 |
| commit | 44dea9f3646a5c27083dfe6cd6b1522e11c7dc69 (patch) | |
| tree | a75d9dc58d0665cbaf358fbce70a4fc58c8c244c /src | |
| parent | 8fcb9c42aad9e623287c26244f079fc5028c6359 (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.js | 16 |
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 }) |
