forked from AkkomaGang/akkoma-fe
Allow emoji suggestions based on a match anywhere in the emoji name, but improve sorting
This commit is contained in:
parent
8fcb9c42aa
commit
44dea9f364
1 changed files with 10 additions and 6 deletions
|
@ -29,17 +29,21 @@ export default data => input => {
|
||||||
export const suggestEmoji = emojis => input => {
|
export const suggestEmoji = emojis => input => {
|
||||||
const noPrefix = input.toLowerCase().substr(1)
|
const noPrefix = input.toLowerCase().substr(1)
|
||||||
return emojis
|
return emojis
|
||||||
.filter(({ displayText }) => displayText.toLowerCase().startsWith(noPrefix))
|
.filter(({ displayText }) => displayText.toLowerCase().match(noPrefix))
|
||||||
.sort((a, b) => {
|
.sort((a, b) => {
|
||||||
let aScore = 0
|
let aScore = 0
|
||||||
let bScore = 0
|
let bScore = 0
|
||||||
|
|
||||||
// Make custom emojis a priority
|
// Prioritize emoji that start with the input string
|
||||||
aScore += a.imageUrl ? 10 : 0
|
aScore += a.displayText.toLowerCase().startsWith(noPrefix) ? 10 : 0
|
||||||
bScore += b.imageUrl ? 10 : 0
|
bScore += b.displayText.toLowerCase().startsWith(noPrefix) ? 10 : 0
|
||||||
|
|
||||||
// Sort alphabetically
|
// Sort by length
|
||||||
const alphabetically = a.displayText > b.displayText ? 1 : -1
|
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
|
return bScore - aScore + alphabetically
|
||||||
})
|
})
|
||||||
|
|
Loading…
Reference in a new issue