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
This commit is contained in:
Anton Nikolaev
2021-02-16 10:46:11 -08:00
committed by Facebook GitHub Bot
parent c4489f9c2a
commit 4390ff44ce

View File

@@ -46,6 +46,7 @@ import * as antdesign_icons from '@ant-design/icons';
// eslint-disable-next-line import/no-unresolved // eslint-disable-next-line import/no-unresolved
import getDefaultPluginsIndex from '../utils/getDefaultPluginsIndex'; import getDefaultPluginsIndex from '../utils/getDefaultPluginsIndex';
import {isDevicePluginDefinition} from '../utils/pluginUtils';
let defaultPluginsIndex: any = null; let defaultPluginsIndex: any = null;
@@ -233,7 +234,17 @@ export const createRequirePluginFunction = (
) => { ) => {
return (pluginDetails: ActivatablePluginDetails): PluginDefinition | null => { return (pluginDetails: ActivatablePluginDetails): PluginDefinition | null => {
try { 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) { } catch (e) {
failedPlugins.push([pluginDetails, e.message]); failedPlugins.push([pluginDetails, e.message]);
console.error(`Plugin ${pluginDetails.id} failed to load`, e); console.error(`Plugin ${pluginDetails.id} failed to load`, e);