function register()

in src/components/Plugins/PluginManager.tsx [203:236]


  function register(manifest: Plugin, version: PluginVersionInfo) {
    const alreadyRegistered =
      plugins.findIndex((p) => p.name === manifest.name && p.config.slot === manifest.config.slot) > -1;

    const slot = manifest.config.slot;

    if (!slot || ALLOWED_SLOTS.indexOf(slot) === -1) {
      console.warn(`Plugin '${manifest.name}' did not give valid slot to register.`);
      return;
    }

    if (!alreadyRegistered) {
      if (version && !isVersionEqualOrHigher(version.api, SUPPORTED_PLUGIN_API_VERSION)) {
        console.warn(
          `Plugin '${manifest.name}' is using unsupported version of plugin API. Please update plugin to use plugin API version ${SUPPORTED_PLUGIN_API_VERSION} or higher.`,
        );
        return;
      }

      if (version && !isVersionEqualOrHigher(version.api, RECOMMENDED_PLUGIN_API_VERSION)) {
        console.warn(
          `Plugin '${manifest.name}' is using older than recommended version of plugin API. Update plugin to use plugin API version ${RECOMMENDED_PLUGIN_API_VERSION} or higher for most recent features and fixes.`,
        );
      }

      if (!version) {
        console.warn(`Plugin '${manifest.name}' didn't provide plugin API version.`);
      }

      const newPlugin = { ...manifest, config: { visible: true, useApplicationStyles: true, ...manifest.config } };

      setPlugins((items) => [...items, newPlugin]);
    }
  }