From 3f0aaaa41efe42776d70490ea213e3c8b194c152 Mon Sep 17 00:00:00 2001
From: syuilo <4439005+syuilo@users.noreply.github.com>
Date: Mon, 23 Sep 2024 19:49:52 +0900
Subject: perf(embed): improve embed performance (#14613)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
* wip
* wip
* wip
* refactor
* refactor
---------
Co-authored-by: かっこかり <67428053+kakkokari-gtyih@users.noreply.github.com>
---
packages/frontend-embed/src/boot.ts | 10 ++++-
.../src/components/EmNoteDetailed.vue | 4 +-
packages/frontend-embed/src/components/EmNotes.vue | 6 +--
packages/frontend-embed/src/di.ts | 2 +
packages/frontend-embed/src/pages/clip.vue | 44 ++++++++++---------
packages/frontend-embed/src/pages/note.vue | 33 +++++++-------
packages/frontend-embed/src/pages/tag.vue | 7 +--
.../frontend-embed/src/pages/user-timeline.vue | 51 +++++++++++++---------
packages/frontend-embed/src/server-context.ts | 21 +++++++++
packages/frontend-embed/src/ui.vue | 16 ++++---
10 files changed, 121 insertions(+), 73 deletions(-)
create mode 100644 packages/frontend-embed/src/server-context.ts
(limited to 'packages/frontend-embed/src')
diff --git a/packages/frontend-embed/src/boot.ts b/packages/frontend-embed/src/boot.ts
index fcea7d32ea..00c7944eb3 100644
--- a/packages/frontend-embed/src/boot.ts
+++ b/packages/frontend-embed/src/boot.ts
@@ -20,16 +20,19 @@ import { serverMetadata } from '@/server-metadata.js';
import { url } from '@@/js/config.js';
import { parseEmbedParams } from '@@/js/embed-page.js';
import { postMessageToParentWindow, setIframeId } from '@/post-message.js';
+import { serverContext } from '@/server-context.js';
import type { Theme } from '@/theme.js';
console.log('Misskey Embed');
+//#region Embedパラメータの取得・パース
const params = new URLSearchParams(location.search);
const embedParams = parseEmbedParams(params);
-
if (_DEV_) console.log(embedParams);
+//#endregion
+//#region テーマ
function parseThemeOrNull(theme: string | null): Theme | null {
if (theme == null) return null;
try {
@@ -65,6 +68,7 @@ if (embedParams.colorMode === 'dark') {
}
});
}
+//#endregion
// サイズの制限
document.documentElement.style.maxWidth = '500px';
@@ -89,6 +93,10 @@ const app = createApp(
app.provide(DI.mediaProxy, new MediaProxy(serverMetadata, url));
+app.provide(DI.serverMetadata, serverMetadata);
+
+app.provide(DI.serverContext, serverContext);
+
app.provide(DI.embedParams, embedParams);
// https://github.com/misskey-dev/misskey/pull/8575#issuecomment-1114239210
diff --git a/packages/frontend-embed/src/components/EmNoteDetailed.vue b/packages/frontend-embed/src/components/EmNoteDetailed.vue
index 8169f500a9..a233011af7 100644
--- a/packages/frontend-embed/src/components/EmNoteDetailed.vue
+++ b/packages/frontend-embed/src/components/EmNoteDetailed.vue
@@ -142,8 +142,8 @@ import EmAcct from '@/components/EmAcct.vue';
import { userPage } from '@/utils.js';
import { notePage } from '@/utils.js';
import { i18n } from '@/i18n.js';
+import { DI } from '@/di.js';
import { shouldCollapsed } from '@@/js/collapsed.js';
-import { serverMetadata } from '@/server-metadata.js';
import { url } from '@@/js/config.js';
import EmMfm from '@/components/EmMfm.js';
@@ -151,6 +151,8 @@ const props = defineProps<{
note: Misskey.entities.Note;
}>();
+const serverMetadata = inject(DI.serverMetadata)!;
+
const inChannel = inject('inChannel', null);
const note = ref(props.note);
diff --git a/packages/frontend-embed/src/components/EmNotes.vue b/packages/frontend-embed/src/components/EmNotes.vue
index 6370f4aeae..3418d97f77 100644
--- a/packages/frontend-embed/src/components/EmNotes.vue
+++ b/packages/frontend-embed/src/components/EmNotes.vue
@@ -20,12 +20,12 @@ SPDX-License-Identifier: AGPL-3.0-only