enhance(frontend): 絵文字ピッカー/オートコンプリートで完全一致の絵文字を優先するように (misskey-dev#12928) (MisskeyIO#338)
Co-authored-by: 1step621 <onestep621@gmail.com>
This commit is contained in:
		| @@ -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) { | ||||||
|   | |||||||
| @@ -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); | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 まっちゃとーにゅ
					まっちゃとーにゅ