From 4390ff44ce07a3a3d878afd949d01d5dc8ef1418 Mon Sep 17 00:00:00 2001 From: Anton Nikolaev Date: Tue, 16 Feb 2021 10:46:11 -0800 Subject: [PATCH] Device plugin management (7/n): Show warnings for the device plugins defined in the legacy format Summary: Show warnings for the device plugins defined in the legacy format and suggest to migrate them Reviewed By: mweststrate Differential Revision: D26459321 fbshipit-source-id: 4e45cd58a63a4ff9903ecaf12e6f9ba4a43e71e1 --- desktop/app/src/dispatcher/plugins.tsx | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/desktop/app/src/dispatcher/plugins.tsx b/desktop/app/src/dispatcher/plugins.tsx index c765ae8e0..5435d8144 100644 --- a/desktop/app/src/dispatcher/plugins.tsx +++ b/desktop/app/src/dispatcher/plugins.tsx @@ -46,6 +46,7 @@ import * as antdesign_icons from '@ant-design/icons'; // eslint-disable-next-line import/no-unresolved import getDefaultPluginsIndex from '../utils/getDefaultPluginsIndex'; +import {isDevicePluginDefinition} from '../utils/pluginUtils'; let defaultPluginsIndex: any = null; @@ -233,7 +234,17 @@ export const createRequirePluginFunction = ( ) => { return (pluginDetails: ActivatablePluginDetails): PluginDefinition | null => { try { - return requirePlugin(pluginDetails, reqFn); + const pluginDefinition = requirePlugin(pluginDetails, reqFn); + if ( + pluginDefinition && + isDevicePluginDefinition(pluginDefinition) && + pluginDefinition.details.pluginType !== 'device' + ) { + console.warn( + `Package ${pluginDefinition.details.name} contains the device plugin "${pluginDefinition.title}" defined in a wrong format. Specify "pluginType" and "supportedDevices" properties and remove exported function "supportsDevice". See details at https://fbflipper.com/docs/extending/desktop-plugin-structure#creating-a-device-plugin.`, + ); + } + return pluginDefinition; } catch (e) { failedPlugins.push([pluginDetails, e.message]); console.error(`Plugin ${pluginDetails.id} failed to load`, e);