diff options
| author | tamaina <tamaina@hotmail.co.jp> | 2022-12-30 12:00:50 +0900 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-12-30 12:00:50 +0900 |
| commit | 8b46edeccf5a8907afbb871e3eb5b3b8eef967a8 (patch) | |
| tree | 1411e540282c4b0d2365d3a2c7e01902a3403a3a /packages/frontend/src/components | |
| parent | fix(client): fix position calculation of nested context menu (diff) | |
| download | misskey-8b46edeccf5a8907afbb871e3eb5b3b8eef967a8.tar.gz misskey-8b46edeccf5a8907afbb871e3eb5b3b8eef967a8.tar.bz2 misskey-8b46edeccf5a8907afbb871e3eb5b3b8eef967a8.zip | |
enhance: Proxy custom emojis to reduce image size and accelerate the frontend (#9431)
* fix(server): /emoji to accept `@.` host expression
* fix(client): use MkEmoji for custom emoji in MkEmojiPicker
* change convertToWebp
* nanka iroiro
* remove
* fix
* nearLosslessは労多くして益少なしなのでやめる
* do not cleanup tmp for development
* update sharp.js to 0.31.3
* mixed: true
* fix MkAutocomplete of 912791b3ab
* clean up
* https://github.com/misskey-dev/misskey/pull/9431#discussion_r1059215943
Diffstat (limited to 'packages/frontend/src/components')
5 files changed, 22 insertions, 16 deletions
diff --git a/packages/frontend/src/components/MkAutocomplete.vue b/packages/frontend/src/components/MkAutocomplete.vue index 6b1b48e480..d150436fb2 100644 --- a/packages/frontend/src/components/MkAutocomplete.vue +++ b/packages/frontend/src/components/MkAutocomplete.vue @@ -16,12 +16,12 @@ </li> </ol> <ol v-else-if="emojis.length > 0" ref="suggests" class="emojis"> - <li v-for="emoji in emojis" tabindex="-1" @click="complete(type, emoji.emoji)" @keydown="onKeydown"> - <span v-if="emoji.isCustomEmoji" class="emoji"><img :src="`/emoji/${emoji.name}.webp`" :alt="emoji.emoji"/></span> - <span v-else-if="defaultStore.state.emojiStyle != 'native'" class="emoji"><img :src="emoji.url" :alt="emoji.emoji"/></span> - <span v-else class="emoji">{{ emoji.emoji }}</span> + <li v-for="emoji in emojis" tabindex="-1" :key="emoji.emoji" @click="complete(type, emoji.emoji)" @keydown="onKeydown"> + <div class="emoji"> + <MkEmoji :emoji="emoji.emoji" /> + </div> <!-- eslint-disable-next-line vue/no-v-html --> - <span class="name" v-html="emoji.name.replace(q, `<b>${q}</b>`)"></span> + <span class="name" v-html="emoji.name.replace(q ?? '', `<b>${q}</b>`)"></span> <span v-if="emoji.aliasOf" class="alias">({{ emoji.aliasOf }})</span> </li> </ol> @@ -37,7 +37,6 @@ import { markRaw, ref, onUpdated, onMounted, onBeforeUnmount, nextTick, watch } from 'vue'; import contains from '@/scripts/contains'; import { char2twemojiFilePath, char2fluentEmojiFilePath } from '@/scripts/emoji-base'; -import { getStaticImageUrl } from '@/scripts/get-static-image-url'; import { acct } from '@/filters/user'; import * as os from '@/os'; import { MFM_TAGS } from '@/scripts/mfm-tags'; @@ -49,9 +48,13 @@ import { i18n } from '@/i18n'; type EmojiDef = { emoji: string; name: string; + url: string; aliasOf?: string; - url?: string; - isCustomEmoji?: boolean; +} | { + emoji: string; + name: string; + aliasOf?: string; + isCustomEmoji?: true; }; const lib = emojilist.filter(x => x.category !== 'flags'); @@ -87,7 +90,6 @@ for (const x of customEmojis) { emojiDefinitions.push({ name: x.name, emoji: `:${x.name}:`, - url: x.url, isCustomEmoji: true, }); @@ -97,7 +99,6 @@ for (const x of customEmojis) { name: alias, aliasOf: x.name, emoji: `:${x.name}:`, - url: x.url, isCustomEmoji: true, }); } @@ -452,14 +453,20 @@ onBeforeUnmount(() => { > .emojis > li { .emoji { - display: inline-block; + display: flex; margin: 0 4px 0 0; + height: 24px; width: 24px; + justify-content: center; + align-items: center; + font-size: 20px; > img { + height: 24px; width: 24px; - vertical-align: bottom; + object-fit: scale-down; } + } .alias { diff --git a/packages/frontend/src/components/MkEmojiPicker.vue b/packages/frontend/src/components/MkEmojiPicker.vue index e9e265a916..c94da97747 100644 --- a/packages/frontend/src/components/MkEmojiPicker.vue +++ b/packages/frontend/src/components/MkEmojiPicker.vue @@ -81,7 +81,6 @@ import { ref, computed, watch, onMounted } from 'vue'; import * as Misskey from 'misskey-js'; import XSection from '@/components/MkEmojiPicker.section.vue'; import { emojilist, UnicodeEmojiDef, unicodeEmojiCategories as categories } from '@/scripts/emojilist'; -import { getStaticImageUrl } from '@/scripts/get-static-image-url'; import Ripple from '@/components/MkRipple.vue'; import * as os from '@/os'; import { isTouchUsing } from '@/scripts/touch'; diff --git a/packages/frontend/src/components/MkMediaImage.vue b/packages/frontend/src/components/MkMediaImage.vue index 56570eaa05..9912faffe8 100644 --- a/packages/frontend/src/components/MkMediaImage.vue +++ b/packages/frontend/src/components/MkMediaImage.vue @@ -23,7 +23,7 @@ <script lang="ts" setup> import { watch } from 'vue'; import * as misskey from 'misskey-js'; -import { getStaticImageUrl } from '@/scripts/get-static-image-url'; +import { getStaticImageUrl } from '@/scripts/media-proxy'; import ImgWithBlurhash from '@/components/MkImgWithBlurhash.vue'; import { defaultStore } from '@/store'; diff --git a/packages/frontend/src/components/global/MkAvatar.vue b/packages/frontend/src/components/global/MkAvatar.vue index 5f3e3c176d..60b8b3b1db 100644 --- a/packages/frontend/src/components/global/MkAvatar.vue +++ b/packages/frontend/src/components/global/MkAvatar.vue @@ -12,7 +12,7 @@ <script lang="ts" setup> import { onMounted, watch } from 'vue'; import * as misskey from 'misskey-js'; -import { getStaticImageUrl } from '@/scripts/get-static-image-url'; +import { getStaticImageUrl } from '@/scripts/media-proxy'; import { extractAvgColorFromBlurhash } from '@/scripts/extract-avg-color-from-blurhash'; import { acct, userPage } from '@/filters/user'; import MkUserOnlineIndicator from '@/components/MkUserOnlineIndicator.vue'; diff --git a/packages/frontend/src/components/global/MkEmoji.vue b/packages/frontend/src/components/global/MkEmoji.vue index bf6be7491d..67e9ef428a 100644 --- a/packages/frontend/src/components/global/MkEmoji.vue +++ b/packages/frontend/src/components/global/MkEmoji.vue @@ -7,7 +7,7 @@ <script lang="ts" setup> import { computed } from 'vue'; -import { getStaticImageUrl } from '@/scripts/get-static-image-url'; +import { getStaticImageUrl } from '@/scripts/media-proxy'; import { char2twemojiFilePath, char2fluentEmojiFilePath } from '@/scripts/emoji-base'; import { defaultStore } from '@/store'; import { getEmojiName } from '@/scripts/emojilist'; |