feat: 增加插件信息自动更新机制

pull/56/head
moonrailgun 2 years ago
parent 8bb320c259
commit 4002309ed2

@ -56,8 +56,33 @@ class PluginManager {
/**
*
*/
async getRegistryPlugins(): Promise<PluginManifest[]> {
return await getCachedRegistryPlugins();
getRegistryPlugins = _once(async (): Promise<PluginManifest[]> => {
const plugins = await getCachedRegistryPlugins();
this.updatePluginsInfo(plugins);
return plugins;
});
/**
*
*/
private async updatePluginsInfo(plugins: PluginManifest[]) {
const installPlugins = await this.getInstalledPlugins();
await this.saveInstalledPlugins(
installPlugins.map((item) => {
const latestPluginInfo = plugins.find((p) => p.name === item.name);
if (latestPluginInfo) {
return {
...item,
...latestPluginInfo,
};
} else {
return item;
}
})
);
}
/**
@ -75,7 +100,7 @@ class PluginManager {
plugins.push(manifest);
}
await getStorage().save(PluginManager.STORE_KEY, plugins);
await this.saveInstalledPlugins(plugins);
await loadSinglePlugin({
name: manifest.name,
@ -93,9 +118,16 @@ class PluginManager {
const index = plugins.findIndex((plugin) => plugin.name === pluginName);
if (index >= 0) {
plugins.splice(index, 1);
await getStorage().save(PluginManager.STORE_KEY, plugins);
await this.saveInstalledPlugins(plugins);
}
}
/**
*
*/
private async saveInstalledPlugins(plugins: PluginManifest[]) {
await getStorage().save(PluginManager.STORE_KEY, plugins);
}
}
export const pluginManager = new PluginManager();

Loading…
Cancel
Save