This commit is contained in:
ikasoba 2025-05-04 00:07:30 -05:00 committed by GitHub
commit 51697c81ef
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 28 additions and 68 deletions

View File

@ -227,77 +227,37 @@ watch(q, () => {
const searchCustom = () => { const searchCustom = () => {
const max = 100; const max = 100;
const emojis = customEmojis.value; const emojis = customEmojis.value;
const matches = new Set<Misskey.entities.EmojiSimple>(); const results: Misskey.entities.EmojiSimple[] = [];
const words = newQ.split(/\s+/);
const exactMatch = emojis.find(emoji => emoji.name === newQ); let i = 0;
if (exactMatch) matches.add(exactMatch);
if (newQ.includes(' ')) { // AND for (const emoji of emojis) {
const keywords = newQ.split(' '); if (i >= max) break;
// const matching = words.slice();
for (const emoji of emojis) { for (const text of [emoji.name, ...emoji.aliases]) {
if (keywords.every(keyword => emoji.name.includes(keyword))) { if (!matching.length) break;
matches.add(emoji);
if (matches.size >= max) break; for (let j = 0; j < matching.length; j++) {
if (text.toLowerCase().includes(matching[j])) {
matching.splice(j, 1);
j -= 1;
continue;
}
} }
} }
if (matches.size >= max) return matches;
// if (matching.length) continue;
for (const emoji of emojis) {
if (keywords.every(keyword => emoji.name.includes(keyword) || emoji.aliases.some(alias => alias.includes(keyword)))) {
matches.add(emoji);
if (matches.size >= max) break;
}
}
} else {
if (customEmojisMap.has(newQ)) {
matches.add(customEmojisMap.get(newQ)!);
}
if (matches.size >= max) return matches;
for (const emoji of emojis) { results.push(emoji);
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) { i++;
if (emoji.name.startsWith(newQ)) {
matches.add(emoji);
if (matches.size >= max) break;
}
}
if (matches.size >= max) return matches;
for (const emoji of emojis) {
if (emoji.aliases.some(alias => alias.startsWith(newQ))) {
matches.add(emoji);
if (matches.size >= max) break;
}
}
if (matches.size >= max) return matches;
for (const emoji of emojis) {
if (emoji.name.includes(newQ)) {
matches.add(emoji);
if (matches.size >= max) break;
}
}
if (matches.size >= max) return matches;
for (const emoji of emojis) {
if (emoji.aliases.some(alias => alias.includes(newQ))) {
matches.add(emoji);
if (matches.size >= max) break;
}
}
} }
return matches; return results;
}; };
const searchUnicode = () => { const searchUnicode = () => {