add unsupported renderer message to catalog (#41898)

pull/41966/head
Will Browne 4 years ago committed by GitHub
parent 0462577f3d
commit 4fa7fd2c75
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 6
      public/app/features/plugins/admin/components/InstallControls/index.tsx
  2. 49
      public/app/features/plugins/admin/hooks/usePlugins.tsx

@ -30,10 +30,14 @@ export const InstallControls = ({ plugin, latestCompatibleVersion }: Props) => {
: PluginStatus.UNINSTALL
: PluginStatus.INSTALL;
if (plugin.isCore || plugin.isDisabled || plugin.type === PluginType.renderer) {
if (plugin.isCore || plugin.isDisabled) {
return null;
}
if (plugin.type === PluginType.renderer) {
return <div className={styles.message}>Renderer plugins cannot be managed by the Plugin Catalog.</div>;
}
if (plugin.isEnterprise && !config.licenseInfo?.hasValidLicense) {
return (
<HorizontalGroup height="auto" align="center">

@ -1,49 +0,0 @@
import { useMemo } from 'react';
import { useAsync } from 'react-use';
import { CatalogPlugin, CatalogPluginsState } from '../types';
import { api } from '../api';
import { mapLocalToCatalog, mapRemoteToCatalog, mapToCatalogPlugin } from '../helpers';
export function usePlugins(): CatalogPluginsState {
const { loading, value, error } = useAsync(async () => {
const remote = await api.getRemotePlugins();
const installed = await api.getInstalledPlugins();
return { remote, installed };
}, []);
const plugins = useMemo(() => {
const installed = value?.installed || [];
const remote = value?.remote || [];
const unique: Record<string, CatalogPlugin> = {};
for (const plugin of installed) {
unique[plugin.id] = mapLocalToCatalog(plugin);
}
for (const plugin of remote) {
if (plugin.typeCode === 'renderer') {
continue;
}
if (!Boolean(plugin.versionSignatureType)) {
continue;
}
if (unique[plugin.slug]) {
unique[plugin.slug] = mapToCatalogPlugin(
installed.find((installedPlugin) => installedPlugin.id === plugin.slug),
plugin
);
} else {
unique[plugin.slug] = mapRemoteToCatalog(plugin);
}
}
return Object.values(unique);
}, [value?.installed, value?.remote]);
return {
loading,
error,
plugins,
};
}
Loading…
Cancel
Save