mirror of
https://github.com/siyuan-note/siyuan.git
synced 2025-12-16 22:50:13 +01:00
This commit is contained in:
parent
9bfe00cf10
commit
1d1902813d
2 changed files with 22 additions and 38 deletions
|
|
@ -744,8 +744,6 @@ export const bazaar = {
|
||||||
if (item.name === dataObj.name) {
|
if (item.name === dataObj.name) {
|
||||||
reloadPlugin(app, {
|
reloadPlugin(app, {
|
||||||
upsertCodePlugins: [dataObj.name],
|
upsertCodePlugins: [dataObj.name],
|
||||||
upsertDataPlugins: [],
|
|
||||||
removePlugins: []
|
|
||||||
});
|
});
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -210,48 +210,34 @@ export const afterLoadPlugin = (plugin: Plugin) => {
|
||||||
/// #endif
|
/// #endif
|
||||||
};
|
};
|
||||||
|
|
||||||
export const reloadPlugin = async (app: App, data: { upsertCodePlugins?: string[], upsertDataPlugins?: string[], removePlugins?: string[] } = {}) => {
|
export const reloadPlugin = async (app: App, data: {
|
||||||
const { upsertCodePlugins = [], upsertDataPlugins = [], removePlugins = [] } = data;
|
upsertCodePlugins?: string[],
|
||||||
const reloadPlugins: string[] = [];
|
upsertDataPlugins?: string[],
|
||||||
|
removePlugins?: string[]
|
||||||
|
} = {}) => {
|
||||||
|
const {upsertCodePlugins = [], upsertDataPlugins = [], removePlugins = []} = data;
|
||||||
removePlugins.forEach((item) => {
|
removePlugins.forEach((item) => {
|
||||||
uninstall(app, item, true);
|
uninstall(app, item, true);
|
||||||
});
|
});
|
||||||
|
upsertCodePlugins.forEach((item) => {
|
||||||
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) => {
|
|
||||||
uninstall(app, item, false);
|
uninstall(app, item, false);
|
||||||
});
|
});
|
||||||
if (reloadPlugins.length > 0) {
|
loadPlugins(app, upsertCodePlugins).then(() => {
|
||||||
loadPlugins(app, reloadPlugins).then(() => {
|
app.plugins.forEach(item => {
|
||||||
app.plugins.forEach(item => {
|
if (upsertCodePlugins.includes(item.name)) {
|
||||||
if (reloadPlugins.includes(item.name)) {
|
afterLoadPlugin(item);
|
||||||
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
|
/// #if !MOBILE
|
||||||
saveLayout();
|
saveLayout();
|
||||||
/// #endif
|
/// #endif
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue