diff --git a/app/src/config/bazaar.ts b/app/src/config/bazaar.ts index 99d0956f5..dc7daa4c4 100644 --- a/app/src/config/bazaar.ts +++ b/app/src/config/bazaar.ts @@ -744,8 +744,6 @@ export const bazaar = { if (item.name === dataObj.name) { reloadPlugin(app, { upsertCodePlugins: [dataObj.name], - upsertDataPlugins: [], - removePlugins: [] }); return true; } diff --git a/app/src/plugin/loader.ts b/app/src/plugin/loader.ts index c8e48f882..68821691f 100644 --- a/app/src/plugin/loader.ts +++ b/app/src/plugin/loader.ts @@ -210,48 +210,34 @@ export const afterLoadPlugin = (plugin: Plugin) => { /// #endif }; -export const reloadPlugin = async (app: App, data: { upsertCodePlugins?: string[], upsertDataPlugins?: string[], removePlugins?: string[] } = {}) => { - const { upsertCodePlugins = [], upsertDataPlugins = [], removePlugins = [] } = data; - const reloadPlugins: string[] = []; - +export const reloadPlugin = async (app: App, data: { + upsertCodePlugins?: string[], + upsertDataPlugins?: string[], + removePlugins?: string[] +} = {}) => { + const {upsertCodePlugins = [], upsertDataPlugins = [], removePlugins = []} = data; removePlugins.forEach((item) => { uninstall(app, item, true); }); - - upsertCodePlugins.forEach((pluginName) => { - reloadPlugins.push(pluginName); - }); - - upsertDataPlugins.forEach((pluginName) => { - const plugin = app.plugins.find(p => p.name === pluginName); - // 检查插件是否重写了 onDataChanged 方法(不是基类的默认实现) - const hasOverriddenOnDataChanged = plugin && - typeof plugin.onDataChanged === "function" && - plugin.onDataChanged !== Plugin.prototype.onDataChanged; - if (hasOverriddenOnDataChanged) { - try { - plugin.onDataChanged(); - return; - } catch (e) { - console.error(`plugin ${pluginName} onDataChanged error:`, e); - } - } - reloadPlugins.push(pluginName); - }); - - reloadPlugins.forEach((item) => { + upsertCodePlugins.forEach((item) => { uninstall(app, item, false); }); - if (reloadPlugins.length > 0) { - loadPlugins(app, reloadPlugins).then(() => { - app.plugins.forEach(item => { - if (reloadPlugins.includes(item.name)) { - afterLoadPlugin(item); - } - }); + loadPlugins(app, upsertCodePlugins).then(() => { + app.plugins.forEach(item => { + if (upsertCodePlugins.includes(item.name)) { + afterLoadPlugin(item); + } }); - } - + }); + app.plugins.forEach(item => { + if (upsertDataPlugins.includes(item.name)) { + try { + item.onDataChanged(); + } catch (e) { + console.error(`plugin ${item.name} onDataChanged error:`, e); + } + } + }); /// #if !MOBILE saveLayout(); /// #endif