summaryrefslogtreecommitdiff
path: root/packages
diff options
context:
space:
mode:
authorsyuilo <4439005+syuilo@users.noreply.github.com>2025-08-20 15:57:20 +0900
committersyuilo <4439005+syuilo@users.noreply.github.com>2025-08-20 15:57:20 +0900
commitbdfe70931995e7ec79c2ec399b2a00c095692b21 (patch)
treece51416611ce926a0d171b3a7ffdafcbd7d54f91 /packages
parentBump version to 2025.8.0-beta.1 (diff)
downloadmisskey-bdfe70931995e7ec79c2ec399b2a00c095692b21.tar.gz
misskey-bdfe70931995e7ec79c2ec399b2a00c095692b21.tar.bz2
misskey-bdfe70931995e7ec79c2ec399b2a00c095692b21.zip
fix(frontend): 読み込み直後にプラグインによるノートの書き換えが行われない問題を修正
ブート時にプラグインがロードされるまで待機 Fix #16428
Diffstat (limited to 'packages')
-rw-r--r--packages/frontend/src/boot/common.ts7
-rw-r--r--packages/frontend/src/boot/main-boot.ts5
-rw-r--r--packages/frontend/src/plugin.ts10
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<App<Element>>) {
console.info(`Misskey v${version}`);
@@ -338,6 +339,12 @@ export async function common(createVue: () => Promise<App<Element>>) {
});
}
+ 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<K extends keyof HandlerDef>(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<void> {
@@ -292,7 +294,7 @@ async function launchPlugin(id: Plugin['installId']): Promise<void> {
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');