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

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

@ -56,8 +56,33 @@ class PluginManager {
/** /**
* *
*/ */
async getRegistryPlugins(): Promise<PluginManifest[]> { getRegistryPlugins = _once(async (): Promise<PluginManifest[]> => {
return await getCachedRegistryPlugins(); 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); plugins.push(manifest);
} }
await getStorage().save(PluginManager.STORE_KEY, plugins); await this.saveInstalledPlugins(plugins);
await loadSinglePlugin({ await loadSinglePlugin({
name: manifest.name, name: manifest.name,
@ -93,9 +118,16 @@ class PluginManager {
const index = plugins.findIndex((plugin) => plugin.name === pluginName); const index = plugins.findIndex((plugin) => plugin.name === pluginName);
if (index >= 0) { if (index >= 0) {
plugins.splice(index, 1); 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(); export const pluginManager = new PluginManager();

Loading…
Cancel
Save