enhance(frontend): 絵文字ピッカー/オートコンプリートで完全一致の絵文字を優先するように (misskey-dev#12928) (MisskeyIO#338)

Co-authored-by: 1step621 <onestep621@gmail.com>
This commit is contained in:
まっちゃとーにゅ 2024-01-07 15:18:22 +09:00 committed by GitHub
parent 91c2efaf04
commit 23f1644bcf
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 26 additions and 4 deletions

View File

@ -261,14 +261,23 @@ function emojiAutoComplete(query: string | null, emojiDb: EmojiDef[], max = 30):
} }
const matched = new Map<string, EmojiScore>(); const matched = new Map<string, EmojiScore>();
//
emojiDb.some(x => {
if (x.name === query && !matched.has(x.aliasOf ?? x.name)) {
matched.set(x.aliasOf ?? x.name, { emoji: x, score: query.length + 2 });
}
return matched.size === max;
});
// //
if (matched.size < max) {
emojiDb.some(x => { emojiDb.some(x => {
if (x.name.startsWith(query) && !x.aliasOf) { if (x.name.startsWith(query) && !x.aliasOf) {
matched.set(x.name, { emoji: x, score: query.length + 1 }); matched.set(x.name, { emoji: x, score: query.length + 1 });
} }
return matched.size === max; return matched.size === max;
}); });
}
// //
if (matched.size < max) { if (matched.size < max) {

View File

@ -225,6 +225,19 @@ watch(q, () => {
} }
} }
} else { } else {
if (customEmojisMap.has(newQ)) {
matches.add(customEmojisMap.get(newQ)!);
}
if (matches.size >= max) return matches;
for (const emoji of emojis) {
if (emoji.aliases.some(alias => alias === newQ)) {
matches.add(emoji);
if (matches.size >= max) break;
}
}
if (matches.size >= max) return matches;
for (const emoji of emojis) { for (const emoji of emojis) {
if (emoji.name.startsWith(newQ)) { if (emoji.name.startsWith(newQ)) {
matches.add(emoji); matches.add(emoji);