mirror of
https://github.com/grafana/grafana.git
synced 2025-02-13 00:55:47 -06:00
33 lines
946 B
TypeScript
33 lines
946 B
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: any) => {
|
|
pluginInfoCache[pluginId] = settings;
|
|
return settings;
|
|
})
|
|
.catch((err: any) => {
|
|
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]);
|
|
};
|