From 21e4c3dfe9b439a76782ab86be93298de2878ab9 Mon Sep 17 00:00:00 2001 From: tamaina Date: Mon, 16 Jan 2023 09:39:58 +0000 Subject: wip --- .../frontend/src/components/MkAutocomplete.vue | 84 +++++++++++----------- packages/frontend/src/components/MkEmojiPicker.vue | 4 +- 2 files changed, 44 insertions(+), 44 deletions(-) (limited to 'packages/frontend/src/components') diff --git a/packages/frontend/src/components/MkAutocomplete.vue b/packages/frontend/src/components/MkAutocomplete.vue index 702fba9796..ab4bf4f793 100644 --- a/packages/frontend/src/components/MkAutocomplete.vue +++ b/packages/frontend/src/components/MkAutocomplete.vue @@ -33,7 +33,7 @@ @@ -230,7 +230,7 @@ function exec() { } else if (props.type === 'emoji') { if (!props.q || props.q === '') { // 最近使った絵文字をサジェスト - emojis.value = defaultStore.state.recentlyUsedEmojis.map(emoji => emojiDb.find(dbEmoji => dbEmoji.emoji === emoji)).filter(x => x) as EmojiDef[]; + emojis.value = defaultStore.state.recentlyUsedEmojis.map(emoji => emojiDb.value.find(dbEmoji => dbEmoji.emoji === emoji)).filter(x => x) as EmojiDef[]; return; } diff --git a/packages/frontend/src/components/MkEmojiPicker.vue b/packages/frontend/src/components/MkEmojiPicker.vue index 9c6d62ce8b..abb14564fb 100644 --- a/packages/frontend/src/components/MkEmojiPicker.vue +++ b/packages/frontend/src/components/MkEmojiPicker.vue @@ -138,7 +138,7 @@ watch(q, () => { const searchCustom = () => { const max = 8; - const emojis = customEmojis; + const emojis = customEmojis.value; const matches = new Set(); const exactMatch = emojis.find(emoji => emoji.name === newQ); @@ -323,7 +323,7 @@ function done(query?: string): boolean | void { if (query == null || typeof query !== 'string') return; const q2 = query.replace(/:/g, ''); - const exactMatchCustom = customEmojis.find(emoji => emoji.name === q2); + const exactMatchCustom = customEmojis.value.find(emoji => emoji.name === q2); if (exactMatchCustom) { chosen(exactMatchCustom); return true; -- cgit v1.2.3-freya From 4cd70df7f465be53dd4fa48e2ab5724b36f4d167 Mon Sep 17 00:00:00 2001 From: tamaina Date: Mon, 16 Jan 2023 09:52:45 +0000 Subject: setInterval --- packages/frontend/src/components/MkAutocomplete.vue | 6 +++--- packages/frontend/src/custom-emojis.ts | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) (limited to 'packages/frontend/src/components') diff --git a/packages/frontend/src/components/MkAutocomplete.vue b/packages/frontend/src/components/MkAutocomplete.vue index ab4bf4f793..f85c92cecd 100644 --- a/packages/frontend/src/components/MkAutocomplete.vue +++ b/packages/frontend/src/components/MkAutocomplete.vue @@ -237,20 +237,20 @@ function exec() { const matched: EmojiDef[] = []; const max = 30; - emojiDb.some(x => { + emojiDb.value.some(x => { if (x.name.startsWith(props.q ?? '') && !x.aliasOf && !matched.some(y => y.emoji === x.emoji)) matched.push(x); return matched.length === max; }); if (matched.length < max) { - emojiDb.some(x => { + emojiDb.value.some(x => { if (x.name.startsWith(props.q ?? '') && !matched.some(y => y.emoji === x.emoji)) matched.push(x); return matched.length === max; }); } if (matched.length < max) { - emojiDb.some(x => { + emojiDb.value.some(x => { if (x.name.includes(props.q ?? '') && !matched.some(y => y.emoji === x.emoji)) matched.push(x); return matched.length === max; }); diff --git a/packages/frontend/src/custom-emojis.ts b/packages/frontend/src/custom-emojis.ts index 52a1148236..6d20187ab4 100644 --- a/packages/frontend/src/custom-emojis.ts +++ b/packages/frontend/src/custom-emojis.ts @@ -6,7 +6,7 @@ import * as Misskey from 'misskey-js'; const storageCache = miLocalStorage.getItem('emojis'); export const customEmojis = shallowRef(storageCache ? JSON.parse(storageCache) : []); -fetchCustomEmojis(); +window.setInterval(fetchCustomEmojis, 1000 * 60 * 10); export async function fetchCustomEmojis() { const now = Date.now(); -- cgit v1.2.3-freya From 43956f3ffb616e6813f179b7a9040f158812fbac Mon Sep 17 00:00:00 2001 From: tamaina Date: Mon, 16 Jan 2023 10:36:29 +0000 Subject: customEmojiCategories as computed --- packages/frontend/src/components/MkEmojiPicker.vue | 3 +-- packages/frontend/src/custom-emojis.ts | 22 ++++++++-------------- packages/frontend/src/pages/about.emojis.vue | 3 +-- packages/frontend/src/pages/emoji-edit-dialog.vue | 5 ++--- 4 files changed, 12 insertions(+), 21 deletions(-) (limited to 'packages/frontend/src/components') diff --git a/packages/frontend/src/components/MkEmojiPicker.vue b/packages/frontend/src/components/MkEmojiPicker.vue index abb14564fb..3399124e85 100644 --- a/packages/frontend/src/components/MkEmojiPicker.vue +++ b/packages/frontend/src/components/MkEmojiPicker.vue @@ -88,7 +88,7 @@ import { deviceKind } from '@/scripts/device-kind'; import { instance } from '@/instance'; import { i18n } from '@/i18n'; import { defaultStore } from '@/store'; -import { getCustomEmojiCategories, customEmojis } from '@/custom-emojis'; +import { customEmojiCategories, customEmojis } from '@/custom-emojis'; const props = withDefaults(defineProps<{ showPinned?: boolean; @@ -104,7 +104,6 @@ const emit = defineEmits<{ (ev: 'chosen', v: string): void; }>(); -const customEmojiCategories = getCustomEmojiCategories(); const searchEl = shallowRef(); const emojisEl = shallowRef(); diff --git a/packages/frontend/src/custom-emojis.ts b/packages/frontend/src/custom-emojis.ts index 8fd5078bde..57842459bd 100644 --- a/packages/frontend/src/custom-emojis.ts +++ b/packages/frontend/src/custom-emojis.ts @@ -1,10 +1,17 @@ import { apiGet } from './os'; import { miLocalStorage } from './local-storage'; -import { shallowRef } from 'vue'; +import { shallowRef, computed, markRaw } from 'vue'; import * as Misskey from 'misskey-js'; const storageCache = miLocalStorage.getItem('emojis'); export const customEmojis = shallowRef(storageCache ? JSON.parse(storageCache) : []); +export const customEmojiCategories = computed(() => { + const categories = new Set(); + for (const emoji of customEmojis.value) { + categories.add(emoji.category); + } + return markRaw(Array.from(categories)); +}); fetchCustomEmojis(); window.setInterval(fetchCustomEmojis, 1000 * 60 * 10); @@ -21,19 +28,6 @@ export async function fetchCustomEmojis() { miLocalStorage.setItem('lastEmojisFetchedAt', now.toString()); } -let cachedCategories; -export function getCustomEmojiCategories() { - if (cachedCategories) return cachedCategories; - - const categories = new Set(); - for (const emoji of customEmojis.value) { - categories.add(emoji.category); - } - const res = Array.from(categories); - cachedCategories = res; - return res; -} - let cachedTags; export function getCustomEmojiTags() { if (cachedTags) return cachedTags; diff --git a/packages/frontend/src/pages/about.emojis.vue b/packages/frontend/src/pages/about.emojis.vue index 7d146d1fdb..d964e48b31 100644 --- a/packages/frontend/src/pages/about.emojis.vue +++ b/packages/frontend/src/pages/about.emojis.vue @@ -39,11 +39,10 @@ import MkSelect from '@/components/MkSelect.vue'; import MkFoldableSection from '@/components/MkFoldableSection.vue'; import MkTab from '@/components/MkTab.vue'; import * as os from '@/os'; -import { customEmojis, getCustomEmojiCategories, getCustomEmojiTags } from '@/custom-emojis'; +import { customEmojis, customEmojiCategories, getCustomEmojiTags } from '@/custom-emojis'; import { i18n } from '@/i18n'; import * as Misskey from 'misskey-js'; -const customEmojiCategories = getCustomEmojiCategories(); const customEmojiTags = getCustomEmojiTags(); let q = $ref(''); let searchEmojis = $ref(null); diff --git a/packages/frontend/src/pages/emoji-edit-dialog.vue b/packages/frontend/src/pages/emoji-edit-dialog.vue index b2880b60b1..4d84ed7f16 100644 --- a/packages/frontend/src/pages/emoji-edit-dialog.vue +++ b/packages/frontend/src/pages/emoji-edit-dialog.vue @@ -15,7 +15,7 @@ - + @@ -36,7 +36,7 @@ import MkInput from '@/components/MkInput.vue'; import * as os from '@/os'; import { unique } from '@/scripts/array'; import { i18n } from '@/i18n'; -import { getCustomEmojiCategories } from '@/custom-emojis'; +import { customEmojiCategories } from '@/custom-emojis'; const props = defineProps<{ emoji: any, @@ -46,7 +46,6 @@ let dialog = $ref(null); let name: string = $ref(props.emoji.name); let category: string = $ref(props.emoji.category); let aliases: string = $ref(props.emoji.aliases.join(' ')); -const categories = getCustomEmojiCategories(); const emit = defineEmits<{ (ev: 'done', v: { deleted?: boolean, updated?: any }): void, -- cgit v1.2.3-freya From 890564e1daeec3b4b08e933945640ecead48a12e Mon Sep 17 00:00:00 2001 From: tamaina Date: Mon, 16 Jan 2023 10:56:43 +0000 Subject: refactor --- packages/frontend/src/components/MkAutocomplete.vue | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'packages/frontend/src/components') diff --git a/packages/frontend/src/components/MkAutocomplete.vue b/packages/frontend/src/components/MkAutocomplete.vue index f85c92cecd..2cb3aeb3d8 100644 --- a/packages/frontend/src/components/MkAutocomplete.vue +++ b/packages/frontend/src/components/MkAutocomplete.vue @@ -62,6 +62,7 @@ type EmojiDef = { const lib = emojilist.filter(x => x.category !== 'flags'); const emojiDb = computed(() => { + //#region Unicode Emoji const char2path = defaultStore.reactiveState.emojiStyle.value === 'twemoji' ? char2twemojiFilePath : char2fluentEmojiFilePath; const unicodeEmojiDB: EmojiDef[] = lib.map(x => ({ @@ -84,8 +85,9 @@ const emojiDb = computed(() => { } unicodeEmojiDB.sort((a, b) => a.name.length - b.name.length); + //#endregion - //#region Construct Emoji DB + //#region Custom Emoji const customEmojiDB: EmojiDef[] = []; for (const x of customEmojis.value) { @@ -108,6 +110,7 @@ const emojiDb = computed(() => { } customEmojiDB.sort((a, b) => a.name.length - b.name.length); + //#endregion return markRaw([ ...customEmojiDB, ...unicodeEmojiDB ]); }); -- cgit v1.2.3-freya From a5f54580a9a069d824ac0c52149682d34349ddfc Mon Sep 17 00:00:00 2001 From: tamaina Date: Sun, 22 Jan 2023 12:57:51 +0000 Subject: fix --- packages/frontend/src/components/global/MkEmoji.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'packages/frontend/src/components') diff --git a/packages/frontend/src/components/global/MkEmoji.vue b/packages/frontend/src/components/global/MkEmoji.vue index 93f50da20e..691392d732 100644 --- a/packages/frontend/src/components/global/MkEmoji.vue +++ b/packages/frontend/src/components/global/MkEmoji.vue @@ -32,7 +32,7 @@ const url = computed(() => { if (char.value) { return char2path(char.value); } else if (props.host == null && !customEmojiName.includes('@')) { - const found = customEmojis.find(x => x.name === customEmojiName); + const found = customEmojis.value.find(x => x.name === customEmojiName); return found ? found.url : null; } else { const rawUrl = props.host ? `/emoji/${customEmojiName}@${props.host}.webp` : `/emoji/${customEmojiName}.webp`; -- cgit v1.2.3-freya From d347f0a087747d4ae19255372ced2d69f62fc00d Mon Sep 17 00:00:00 2001 From: tamaina Date: Sun, 22 Jan 2023 16:07:17 +0000 Subject: wip --- packages/backend/src/core/entities/EmojiEntityService.ts | 4 +++- .../src/server/api/endpoints/admin/emoji/list-remote.ts | 2 +- .../backend/src/server/api/endpoints/admin/emoji/list.ts | 2 +- packages/frontend/src/components/global/MkEmoji.vue | 15 ++++++++------- packages/frontend/src/custom-emojis.ts | 10 +++++----- 5 files changed, 18 insertions(+), 15 deletions(-) (limited to 'packages/frontend/src/components') diff --git a/packages/backend/src/core/entities/EmojiEntityService.ts b/packages/backend/src/core/entities/EmojiEntityService.ts index 611552d89e..7d248e6342 100644 --- a/packages/backend/src/core/entities/EmojiEntityService.ts +++ b/packages/backend/src/core/entities/EmojiEntityService.ts @@ -22,8 +22,10 @@ export class EmojiEntityService { @bindThis public async pack( src: Emoji['id'] | Emoji, - opts: { omitHost?: boolean; omitId?: boolean; withUrl?: boolean; } = {}, + opts: { omitHost?: boolean; omitId?: boolean; withUrl?: boolean; } = { omitHost: true, omitId: true, withUrl: true }, ): Promise> { + opts = { omitHost: true, omitId: true, withUrl: true, ...opts } + const emoji = typeof src === 'object' ? src : await this.emojisRepository.findOneByOrFail({ id: src }); return { diff --git a/packages/backend/src/server/api/endpoints/admin/emoji/list-remote.ts b/packages/backend/src/server/api/endpoints/admin/emoji/list-remote.ts index d9ce97194a..8e0ea2e117 100644 --- a/packages/backend/src/server/api/endpoints/admin/emoji/list-remote.ts +++ b/packages/backend/src/server/api/endpoints/admin/emoji/list-remote.ts @@ -101,7 +101,7 @@ export default class extends Endpoint { .take(ps.limit) .getMany(); - return this.emojiEntityService.packMany(emojis); + return this.emojiEntityService.packMany(emojis, { omitHost: false, omitId: false, withUrl: false }); }); } } diff --git a/packages/backend/src/server/api/endpoints/admin/emoji/list.ts b/packages/backend/src/server/api/endpoints/admin/emoji/list.ts index 1a6096f36f..1b1931f8e6 100644 --- a/packages/backend/src/server/api/endpoints/admin/emoji/list.ts +++ b/packages/backend/src/server/api/endpoints/admin/emoji/list.ts @@ -98,7 +98,7 @@ export default class extends Endpoint { emojis = await q.take(ps.limit).getMany(); } - return this.emojiEntityService.packMany(emojis); + return this.emojiEntityService.packMany(emojis, { omitHost: false, omitId: false, withUrl: false }); }); } } diff --git a/packages/frontend/src/components/global/MkEmoji.vue b/packages/frontend/src/components/global/MkEmoji.vue index 691392d732..5eba8764b1 100644 --- a/packages/frontend/src/components/global/MkEmoji.vue +++ b/packages/frontend/src/components/global/MkEmoji.vue @@ -1,6 +1,6 @@ diff --git a/packages/frontend/src/components/MkEmojiPicker.vue b/packages/frontend/src/components/MkEmojiPicker.vue index 3399124e85..b288cb22fe 100644 --- a/packages/frontend/src/components/MkEmojiPicker.vue +++ b/packages/frontend/src/components/MkEmojiPicker.vue @@ -60,7 +60,7 @@
{{ i18n.ts.customEmojis }}
- {{ category || i18n.ts.other }} + {{ category || i18n.ts.other }}
{{ i18n.ts.emoji }}
-- cgit v1.2.3-freya From 0d44129ae34526503d391cbade18f26e9bba9c77 Mon Sep 17 00:00:00 2001 From: tamaina Date: Sun, 22 Jan 2023 17:20:53 +0000 Subject: remove console.log --- packages/frontend/src/components/global/MkEmoji.vue | 1 - packages/frontend/src/custom-emojis.ts | 4 ---- 2 files changed, 5 deletions(-) (limited to 'packages/frontend/src/components') diff --git a/packages/frontend/src/components/global/MkEmoji.vue b/packages/frontend/src/components/global/MkEmoji.vue index 5eba8764b1..c489ab5fa1 100644 --- a/packages/frontend/src/components/global/MkEmoji.vue +++ b/packages/frontend/src/components/global/MkEmoji.vue @@ -33,7 +33,6 @@ const url = computed(() => { return char2path(char.value); } else if (props.host == null && !customEmojiName.value.includes('@')) { const found = customEmojis.value.find(x => x.name === customEmojiName.value); - console.log(found) return found ? found.url : null; } else { const rawUrl = props.host ? `/emoji/${customEmojiName.value}@${props.host}.webp` : `/emoji/${customEmojiName.value}.webp`; diff --git a/packages/frontend/src/custom-emojis.ts b/packages/frontend/src/custom-emojis.ts index 89b8887b21..2cd088993d 100644 --- a/packages/frontend/src/custom-emojis.ts +++ b/packages/frontend/src/custom-emojis.ts @@ -14,10 +14,6 @@ export const customEmojiCategories = computed(() => { return markRaw(Array.from(categories)); }); -watch(customEmojis, (newVal) => { - console.log('new', newVal) -}); - stream.on('emojiAdded', emojiData => { customEmojis.value = [ emojiData.emoji, ...customEmojis.value ]; }); -- cgit v1.2.3-freya From 93dd0638ade0ba896365f5f9cc1acba103db386e Mon Sep 17 00:00:00 2001 From: tamaina Date: Sun, 22 Jan 2023 17:33:20 +0000 Subject: better category null handling --- packages/frontend/src/components/MkEmojiPicker.vue | 10 +++++++++- packages/frontend/src/custom-emojis.ts | 10 ++++++---- 2 files changed, 15 insertions(+), 5 deletions(-) (limited to 'packages/frontend/src/components') diff --git a/packages/frontend/src/components/MkEmojiPicker.vue b/packages/frontend/src/components/MkEmojiPicker.vue index b288cb22fe..479d8eb7fb 100644 --- a/packages/frontend/src/components/MkEmojiPicker.vue +++ b/packages/frontend/src/components/MkEmojiPicker.vue @@ -60,7 +60,15 @@
{{ i18n.ts.customEmojis }}
- {{ category || i18n.ts.other }} + + {{ category || i18n.ts.other }} +
{{ i18n.ts.emoji }}
diff --git a/packages/frontend/src/custom-emojis.ts b/packages/frontend/src/custom-emojis.ts index 2cd088993d..4dd2e0909f 100644 --- a/packages/frontend/src/custom-emojis.ts +++ b/packages/frontend/src/custom-emojis.ts @@ -1,17 +1,19 @@ import { apiGet } from './os'; import { miLocalStorage } from './local-storage'; -import { shallowRef, computed, markRaw, watch } from 'vue'; +import { shallowRef, computed, markRaw } from 'vue'; import * as Misskey from 'misskey-js'; import { stream } from '@/stream'; const storageCache = miLocalStorage.getItem('emojis'); export const customEmojis = shallowRef(storageCache ? JSON.parse(storageCache) : []); -export const customEmojiCategories = computed(() => { +export const customEmojiCategories = computed<[ ...string[], null ]>(() => { const categories = new Set(); for (const emoji of customEmojis.value) { - categories.add(emoji.category); + if (emoji.category && emoji.category !== 'null') { + categories.add(emoji.category); + } } - return markRaw(Array.from(categories)); + return markRaw([ ...Array.from(categories), null ]); }); stream.on('emojiAdded', emojiData => { -- cgit v1.2.3-freya From 26fbb3a5603096615ec304c1ca4b3da22ad6b456 Mon Sep 17 00:00:00 2001 From: tamaina Date: Sun, 22 Jan 2023 17:39:11 +0000 Subject: fix --- packages/frontend/src/components/MkEmojiPicker.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'packages/frontend/src/components') diff --git a/packages/frontend/src/components/MkEmojiPicker.vue b/packages/frontend/src/components/MkEmojiPicker.vue index 479d8eb7fb..f64cc6e9aa 100644 --- a/packages/frontend/src/components/MkEmojiPicker.vue +++ b/packages/frontend/src/components/MkEmojiPicker.vue @@ -64,7 +64,7 @@ v-for="category in customEmojiCategories" :key="`custom:${category}`" :initial-shown="false" - :emojis="computed(() => customEmojis.filter(e => category === null ? e.category == null || e.category === 'null' : e.category === category).map(e => `:${e.name}:`))" + :emojis="computed(() => customEmojis.filter(e => category === null ? (e.category === 'null' || !e.category) : e.category === category).map(e => `:${e.name}:`))" @chosen="chosen" > {{ category || i18n.ts.other }} -- cgit v1.2.3-freya From 5f49ac1b11ab7927ab17df2bd8a30eaf803e94f4 Mon Sep 17 00:00:00 2001 From: tamaina Date: Wed, 25 Jan 2023 06:21:08 +0000 Subject: fix(client): アニメーションをオフに設定しても絵文字のアニメーションが止まらない Fix #9720 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/frontend/src/components/global/MkEmoji.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'packages/frontend/src/components') diff --git a/packages/frontend/src/components/global/MkEmoji.vue b/packages/frontend/src/components/global/MkEmoji.vue index 93f50da20e..991c6fb7ca 100644 --- a/packages/frontend/src/components/global/MkEmoji.vue +++ b/packages/frontend/src/components/global/MkEmoji.vue @@ -33,7 +33,7 @@ const url = computed(() => { return char2path(char.value); } else if (props.host == null && !customEmojiName.includes('@')) { const found = customEmojis.find(x => x.name === customEmojiName); - return found ? found.url : null; + return found ? defaultStore.state.disableShowingAnimatedImages ? getStaticImageUrl(found.url) : found.url : null; } else { const rawUrl = props.host ? `/emoji/${customEmojiName}@${props.host}.webp` : `/emoji/${customEmojiName}.webp`; return defaultStore.state.disableShowingAnimatedImages -- cgit v1.2.3-freya From 1e3447bccbbabf09bafabf6df79d9ce3da04a506 Mon Sep 17 00:00:00 2001 From: syuilo Date: Wed, 25 Jan 2023 19:45:25 +0900 Subject: :art: --- packages/frontend/src/components/MkSuperMenu.vue | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'packages/frontend/src/components') diff --git a/packages/frontend/src/components/MkSuperMenu.vue b/packages/frontend/src/components/MkSuperMenu.vue index bb2a789b3f..5d33ad0ad3 100644 --- a/packages/frontend/src/components/MkSuperMenu.vue +++ b/packages/frontend/src/components/MkSuperMenu.vue @@ -6,15 +6,15 @@
-- cgit v1.2.3-freya From 80d2e157f6a08d593367b2b933beb2a30b666b83 Mon Sep 17 00:00:00 2001 From: syuilo Date: Wed, 25 Jan 2023 19:49:17 +0900 Subject: :art: --- packages/frontend/src/components/MkMenu.vue | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'packages/frontend/src/components') diff --git a/packages/frontend/src/components/MkMenu.vue b/packages/frontend/src/components/MkMenu.vue index 94dabcac90..eee77a9475 100644 --- a/packages/frontend/src/components/MkMenu.vue +++ b/packages/frontend/src/components/MkMenu.vue @@ -335,8 +335,7 @@ onBeforeUnmount(() => { } .icon { - margin-right: 5px; - width: 20px; + margin-right: 8px; } .caret { -- cgit v1.2.3-freya