From b9e1039b7a79a649f76e99769cffb916d9951eaa Mon Sep 17 00:00:00 2001 From: Lorenzo Blasa Date: Mon, 11 Jul 2022 07:04:55 -0700 Subject: [PATCH] Load marketplace plugins from PluginManager Summary: Expand PluginManager as to be able to load and install plugins from Marketplace. Reviewed By: passy Differential Revision: D37749802 fbshipit-source-id: 7d7e23427cc9d01f5c953b90e5b346a9d6bab19f --- .../src/plugins/PluginManager.tsx | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/desktop/flipper-server-core/src/plugins/PluginManager.tsx b/desktop/flipper-server-core/src/plugins/PluginManager.tsx index 75fabd3b7..178b6d326 100644 --- a/desktop/flipper-server-core/src/plugins/PluginManager.tsx +++ b/desktop/flipper-server-core/src/plugins/PluginManager.tsx @@ -34,6 +34,7 @@ import { installPluginFromNpm, } from 'flipper-plugin-lib'; import {ServerAddOnManager} from './ServerAddManager'; +import {loadMarketplacePlugins} from './loadMarketplacePlugins'; const maxInstalledPluginVersionsToKeep = 2; @@ -98,6 +99,30 @@ export class PluginManager { return bundledPlugins; } + async loadMarketplacePlugins() { + console.info('Load available plugins from marketplace'); + return loadMarketplacePlugins(this.flipperServer, ''); + } + + async installPluginForMarketplace(name: string) { + console.info(`Install plugin '${name}' from marketplace`); + + const plugins = await this.loadMarketplacePlugins(); + const plugin = plugins.find((p) => p.id === name); + if (plugin) { + console.info(`Plugin '${name}' is available, attempt to install`); + try { + return await this.downloadPlugin(plugin); + } catch (e) { + console.warn(`Unable to install plugin '${name}'. Error:`, e); + } + } else { + console.info('Plugin not available in marketplace'); + } + + throw new Error(`Unable to install plugin '${name}' from marketplace`); + } + async downloadPlugin( plugin: DownloadablePluginDetails, ): Promise {