summaryrefslogtreecommitdiff
path: root/packages/frontend/src/components
diff options
context:
space:
mode:
authorsyuilo <Syuilotan@yahoo.co.jp>2023-06-01 17:10:53 +0900
committersyuilo <Syuilotan@yahoo.co.jp>2023-06-01 17:10:53 +0900
commitcd827488891ff538d480fa2f9821908bed9a6756 (patch)
treedd9144b282861455753ca6fa2505ae700fc18f31 /packages/frontend/src/components
parentrefactor (diff)
downloadsharkey-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.vue15
-rw-r--r--packages/frontend/src/components/MkEmojiPicker.vue30
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;