From bdfe70931995e7ec79c2ec399b2a00c095692b21 Mon Sep 17 00:00:00 2001 From: syuilo <4439005+syuilo@users.noreply.github.com> Date: Wed, 20 Aug 2025 15:57:20 +0900 Subject: [PATCH] =?UTF-8?q?fix(frontend):=20=E8=AA=AD=E3=81=BF=E8=BE=BC?= =?UTF-8?q?=E3=81=BF=E7=9B=B4=E5=BE=8C=E3=81=AB=E3=83=97=E3=83=A9=E3=82=B0?= =?UTF-8?q?=E3=82=A4=E3=83=B3=E3=81=AB=E3=82=88=E3=82=8B=E3=83=8E=E3=83=BC?= =?UTF-8?q?=E3=83=88=E3=81=AE=E6=9B=B8=E3=81=8D=E6=8F=9B=E3=81=88=E3=81=8C?= =?UTF-8?q?=E8=A1=8C=E3=82=8F=E3=82=8C=E3=81=AA=E3=81=84=E5=95=8F=E9=A1=8C?= =?UTF-8?q?=E3=82=92=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ブート時にプラグインがロードされるまで待機 Fix #16428 --- packages/frontend/src/boot/common.ts | 7 +++++++ packages/frontend/src/boot/main-boot.ts | 5 +---- packages/frontend/src/plugin.ts | 10 ++++++---- 3 files changed, 14 insertions(+), 8 deletions(-) diff --git a/packages/frontend/src/boot/common.ts b/packages/frontend/src/boot/common.ts index 395d1e5e7e..574012ff78 100644 --- a/packages/frontend/src/boot/common.ts +++ b/packages/frontend/src/boot/common.ts @@ -29,6 +29,7 @@ import { miLocalStorage } from '@/local-storage.js'; import { fetchCustomEmojis } from '@/custom-emojis.js'; import { prefer } from '@/preferences.js'; import { $i } from '@/i.js'; +import { launchPlugins } from '@/plugin.js'; export async function common(createVue: () => Promise>) { console.info(`Misskey v${version}`); @@ -338,6 +339,12 @@ export async function common(createVue: () => Promise>) { }); } + try { + await launchPlugins(); + } catch (error) { + console.error('Failed to launch plugins:', error); + } + app.mount(rootEl); // boot.jsのやつを解除 diff --git a/packages/frontend/src/boot/main-boot.ts b/packages/frontend/src/boot/main-boot.ts index 46e690a55f..6ae8379801 100644 --- a/packages/frontend/src/boot/main-boot.ts +++ b/packages/frontend/src/boot/main-boot.ts @@ -26,7 +26,6 @@ import { mainRouter } from '@/router.js'; import { makeHotkey } from '@/utility/hotkey.js'; import { addCustomEmoji, removeCustomEmojis, updateCustomEmojis } from '@/custom-emojis.js'; import { prefer } from '@/preferences.js'; -import { launchPlugins } from '@/plugin.js'; import { updateCurrentAccountPartial } from '@/accounts.js'; import { migrateOldSettings } from '@/pref-migrate.js'; import { unisonReload } from '@/utility/unison-reload.js'; @@ -79,8 +78,6 @@ export async function mainBoot() { } } - launchPlugins(); - try { if (prefer.s.enableSeasonalScreenEffect) { const month = new Date().getMonth() + 1; @@ -421,7 +418,7 @@ export async function mainBoot() { } }, allowRepeat: true, - } + }, } as const satisfies Keymap; window.document.addEventListener('keydown', makeHotkey(keymap), { passive: false }); diff --git a/packages/frontend/src/plugin.ts b/packages/frontend/src/plugin.ts index 632c913ad7..346e275575 100644 --- a/packages/frontend/src/plugin.ts +++ b/packages/frontend/src/plugin.ts @@ -233,11 +233,13 @@ function addPluginHandler(installId: Plugin['install } export function launchPlugins() { - for (const plugin of prefer.s.plugins) { + return Promise.all(prefer.s.plugins.map(plugin => { if (plugin.active) { - launchPlugin(plugin.installId); + return launchPlugin(plugin.installId); + } else { + return Promise.resolve(); } - } + })); } async function launchPlugin(id: Plugin['installId']): Promise { @@ -292,7 +294,7 @@ async function launchPlugin(id: Plugin['installId']): Promise { pluginContexts.set(plugin.installId, aiscript); const parser = await getParser(); - aiscript.exec(parser.parse(plugin.src)).then( + await aiscript.exec(parser.parse(plugin.src)).then( () => { console.info('Plugin installed:', plugin.name, 'v' + plugin.version); systemLog('Plugin started');