diff options
| author | syuilo <4439005+syuilo@users.noreply.github.com> | 2024-09-23 19:49:52 +0900 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-09-23 19:49:52 +0900 |
| commit | 3f0aaaa41efe42776d70490ea213e3c8b194c152 (patch) | |
| tree | aaa2e340be67f32e933851cd6461aa944c06c3db /packages/frontend-embed/src/pages/note.vue | |
| parent | enhance(frontend): tweak control panel (diff) | |
| download | misskey-3f0aaaa41efe42776d70490ea213e3c8b194c152.tar.gz misskey-3f0aaaa41efe42776d70490ea213e3c8b194c152.tar.bz2 misskey-3f0aaaa41efe42776d70490ea213e3c8b194c152.zip | |
perf(embed): improve embed performance (#14613)
* wip
* wip
* wip
* refactor
* refactor
---------
Co-authored-by: かっこかり <67428053+kakkokari-gtyih@users.noreply.github.com>
Diffstat (limited to 'packages/frontend-embed/src/pages/note.vue')
| -rw-r--r-- | packages/frontend-embed/src/pages/note.vue | 33 |
1 files changed, 15 insertions, 18 deletions
diff --git a/packages/frontend-embed/src/pages/note.vue b/packages/frontend-embed/src/pages/note.vue index 86aebe072a..918583ecc7 100644 --- a/packages/frontend-embed/src/pages/note.vue +++ b/packages/frontend-embed/src/pages/note.vue @@ -5,40 +5,37 @@ SPDX-License-Identifier: AGPL-3.0-only <template> <div :class="$style.noteEmbedRoot"> - <EmLoading v-if="loading"/> - <EmNoteDetailed v-else-if="note" :note="note"/> + <EmNoteDetailed v-if="note" :note="note"/> <XNotFound v-else/> </div> </template> <script setup lang="ts"> -import { ref } from 'vue'; +import { inject, ref } from 'vue'; import * as Misskey from 'misskey-js'; import EmNoteDetailed from '@/components/EmNoteDetailed.vue'; -import EmLoading from '@/components/EmLoading.vue'; import XNotFound from '@/pages/not-found.vue'; +import { DI } from '@/di.js'; import { misskeyApi } from '@/misskey-api.js'; +import { assertServerContext } from '@/server-context'; const props = defineProps<{ noteId: string; }>(); +const serverContext = inject(DI.serverContext)!; + const note = ref<Misskey.entities.Note | null>(null); -const loading = ref(true); -// TODO: クライアント側でAPIを叩くのは二度手間なので予めHTMLに埋め込んでおく -misskeyApi('notes/show', { - noteId: props.noteId, -}).then(res => { - // リモートのノートは埋め込ませない - if (res.url == null && res.uri == null) { - note.value = res; - } - loading.value = false; -}).catch(err => { - console.error(err); - loading.value = false; -}); +if (assertServerContext(serverContext, 'note')) { + note.value = serverContext.note; +} else { + note.value = await misskeyApi('notes/show', { + noteId: props.noteId, + }).catch(() => { + return null; + }); +} </script> <style lang="scss" module> |