diff options
| author | syuilo <Syuilotan@yahoo.co.jp> | 2023-06-01 17:10:53 +0900 |
|---|---|---|
| committer | syuilo <Syuilotan@yahoo.co.jp> | 2023-06-01 17:10:53 +0900 |
| commit | cd827488891ff538d480fa2f9821908bed9a6756 (patch) | |
| tree | dd9144b282861455753ca6fa2505ae700fc18f31 /packages/frontend/src/components | |
| parent | refactor (diff) | |
| download | sharkey-cd827488891ff538d480fa2f9821908bed9a6756.tar.gz sharkey-cd827488891ff538d480fa2f9821908bed9a6756.tar.bz2 sharkey-cd827488891ff538d480fa2f9821908bed9a6756.zip | |
enhance(frontend): 追加の絵文字用辞書をダウンロードできるように
Resolve #10921
Diffstat (limited to 'packages/frontend/src/components')
| -rw-r--r-- | packages/frontend/src/components/MkAutocomplete.vue | 15 | ||||
| -rw-r--r-- | packages/frontend/src/components/MkEmojiPicker.vue | 30 |
2 files changed, 38 insertions, 7 deletions
diff --git a/packages/frontend/src/components/MkAutocomplete.vue b/packages/frontend/src/components/MkAutocomplete.vue index 4338a8f8e6..1af998dedd 100644 --- a/packages/frontend/src/components/MkAutocomplete.vue +++ b/packages/frontend/src/components/MkAutocomplete.vue @@ -42,7 +42,7 @@ import { acct } from '@/filters/user'; import * as os from '@/os'; import { MFM_TAGS } from '@/scripts/mfm-tags'; import { defaultStore } from '@/store'; -import { emojilist } from '@/scripts/emojilist'; +import { emojilist, getEmojiName } from '@/scripts/emojilist'; import { i18n } from '@/i18n'; import { miLocalStorage } from '@/local-storage'; import { customEmojis } from '@/custom-emojis'; @@ -71,6 +71,19 @@ const emojiDb = computed(() => { url: char2path(x.char), })); + for (const index of Object.values(defaultStore.state.additionalUnicodeEmojiIndexes)) { + for (const [emoji, keywords] of Object.entries(index)) { + for (const k of keywords) { + unicodeEmojiDB.push({ + emoji: emoji, + name: k, + aliasOf: getEmojiName(emoji)!, + url: char2path(emoji), + }); + } + } + } + unicodeEmojiDB.sort((a, b) => a.name.length - b.name.length); //#endregion diff --git a/packages/frontend/src/components/MkEmojiPicker.vue b/packages/frontend/src/components/MkEmojiPicker.vue index aab00e17d6..cf856fd31f 100644 --- a/packages/frontend/src/components/MkEmojiPicker.vue +++ b/packages/frontend/src/components/MkEmojiPicker.vue @@ -224,7 +224,6 @@ watch(q, () => { if (newQ.includes(' ')) { // AND検索 const keywords = newQ.split(' '); - // 名前にキーワードが含まれている for (const emoji of emojis) { if (keywords.every(keyword => emoji.name.includes(keyword))) { matches.add(emoji); @@ -233,11 +232,12 @@ watch(q, () => { } if (matches.size >= max) return matches; - // 名前にキーワードが含まれている - for (const emoji of emojis) { - if (keywords.every(keyword => emoji.name.includes(keyword))) { - matches.add(emoji); - if (matches.size >= max) break; + for (const index of Object.values(defaultStore.state.additionalUnicodeEmojiIndexes)) { + for (const emoji of emojis) { + if (keywords.every(keyword => index[emoji.char].some(k => k.includes(keyword)))) { + matches.add(emoji); + if (matches.size >= max) break; + } } } } else { @@ -249,6 +249,15 @@ watch(q, () => { } if (matches.size >= max) return matches; + for (const index of Object.values(defaultStore.state.additionalUnicodeEmojiIndexes)) { + for (const emoji of emojis) { + if (index[emoji.char].some(k => k.startsWith(newQ))) { + matches.add(emoji); + if (matches.size >= max) break; + } + } + } + for (const emoji of emojis) { if (emoji.name.includes(newQ)) { matches.add(emoji); @@ -256,6 +265,15 @@ watch(q, () => { } } if (matches.size >= max) return matches; + + for (const index of Object.values(defaultStore.state.additionalUnicodeEmojiIndexes)) { + for (const emoji of emojis) { + if (index[emoji.char].some(k => k.includes(newQ))) { + matches.add(emoji); + if (matches.size >= max) break; + } + } + } } return matches; |