mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
* fix: stop displaying error alerts when plugins cannot be loaded * fix: only hide the error if it is a 403 error * fix: revert unnecessary object spreading
39 lines
1.1 KiB
TypeScript
39 lines
1.1 KiB
TypeScript
import { PluginMeta } from '@grafana/data';
|
|
import { BackendSrvRequest, getBackendSrv } from '@grafana/runtime';
|
|
|
|
type PluginCache = {
|
|
[key: string]: PluginMeta;
|
|
};
|
|
|
|
const pluginInfoCache: PluginCache = {};
|
|
|
|
export function getPluginSettings(pluginId: string, options?: Partial<BackendSrvRequest>): Promise<PluginMeta> {
|
|
const v = pluginInfoCache[pluginId];
|
|
if (v) {
|
|
return Promise.resolve(v);
|
|
}
|
|
return getBackendSrv()
|
|
.get(`/api/plugins/${pluginId}/settings`, undefined, undefined, options)
|
|
.then((settings) => {
|
|
pluginInfoCache[pluginId] = settings;
|
|
return settings;
|
|
})
|
|
.catch((e) => {
|
|
// User does not have access to plugin
|
|
if (typeof e === 'object' && e !== null && 'status' in e && e.status === 403) {
|
|
e.isHandled = true;
|
|
return Promise.reject(e);
|
|
}
|
|
|
|
return Promise.reject(new Error('Unknown Plugin'));
|
|
});
|
|
}
|
|
|
|
export const clearPluginSettingsCache = (pluginId?: string) => {
|
|
if (pluginId) {
|
|
return delete pluginInfoCache[pluginId];
|
|
}
|
|
// clear all
|
|
return Object.keys(pluginInfoCache).forEach((key) => delete pluginInfoCache[key]);
|
|
};
|