aboutsummaryrefslogtreecommitdiff
path: root/src/components/emoji_input/suggestor.js
diff options
context:
space:
mode:
authorShpuld Shpludson <shp@cock.li>2020-05-08 08:35:30 +0000
committerShpuld Shpludson <shp@cock.li>2020-05-08 08:35:30 +0000
commit1186205583715b187bb4e503dc35e8c0644cfc7e (patch)
treec439d51bcc3a5a972fc763ab96ade4cee9bed7a1 /src/components/emoji_input/suggestor.js
parent8b1aa593a46869ac1ea26de8a1f31d9fa2f44e56 (diff)
parent921eedfd84007da72619a553ba8d074076559e7a (diff)
Merge branch 'develop' into 'feat/relationship-refactor'
# Conflicts: # src/components/notification/notification.js
Diffstat (limited to 'src/components/emoji_input/suggestor.js')
-rw-r--r--src/components/emoji_input/suggestor.js24
1 files changed, 18 insertions, 6 deletions
diff --git a/src/components/emoji_input/suggestor.js b/src/components/emoji_input/suggestor.js
index aec5c39d..15a71eff 100644
--- a/src/components/emoji_input/suggestor.js
+++ b/src/components/emoji_input/suggestor.js
@@ -29,17 +29,29 @@ 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
+ // An exact match always wins
+ aScore += a.displayText.toLowerCase() === noPrefix ? 200 : 0
+ bScore += b.displayText.toLowerCase() === noPrefix ? 200 : 0
- // Sort alphabetically
- const alphabetically = a.displayText > b.displayText ? 1 : -1
+ // Prioritize custom emoji a lot
+ aScore += a.imageUrl ? 100 : 0
+ bScore += b.imageUrl ? 100 : 0
+
+ // Prioritize prefix matches somewhat
+ aScore += a.displayText.toLowerCase().startsWith(noPrefix) ? 10 : 0
+ bScore += b.displayText.toLowerCase().startsWith(noPrefix) ? 10 : 0
+
+ // 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
})