summaryrefslogtreecommitdiff
path: root/packages/frontend-embed/src/pages/note.vue
diff options
context:
space:
mode:
authorsyuilo <4439005+syuilo@users.noreply.github.com>2024-09-23 19:49:52 +0900
committerGitHub <noreply@github.com>2024-09-23 19:49:52 +0900
commit3f0aaaa41efe42776d70490ea213e3c8b194c152 (patch)
treeaaa2e340be67f32e933851cd6461aa944c06c3db /packages/frontend-embed/src/pages/note.vue
parentenhance(frontend): tweak control panel (diff)
downloadmisskey-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.vue33
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>