2019-10-31 04:48:05 -05:00
|
|
|
import { PluginMeta } from '@grafana/data';
|
2022-04-22 08:33:13 -05:00
|
|
|
import { getBackendSrv } from '@grafana/runtime';
|
2019-04-15 09:54:00 -05:00
|
|
|
|
|
|
|
type PluginCache = {
|
2019-04-29 11:14:39 -05:00
|
|
|
[key: string]: PluginMeta;
|
2019-04-15 09:54:00 -05:00
|
|
|
};
|
|
|
|
|
|
|
|
const pluginInfoCache: PluginCache = {};
|
|
|
|
|
2019-04-29 11:14:39 -05:00
|
|
|
export function getPluginSettings(pluginId: string): Promise<PluginMeta> {
|
2019-04-15 09:54:00 -05:00
|
|
|
const v = pluginInfoCache[pluginId];
|
|
|
|
if (v) {
|
|
|
|
return Promise.resolve(v);
|
|
|
|
}
|
|
|
|
return getBackendSrv()
|
|
|
|
.get(`/api/plugins/${pluginId}/settings`)
|
2019-07-18 01:03:04 -05:00
|
|
|
.then((settings: any) => {
|
2019-04-15 09:54:00 -05:00
|
|
|
pluginInfoCache[pluginId] = settings;
|
|
|
|
return settings;
|
|
|
|
})
|
2019-07-18 01:03:04 -05:00
|
|
|
.catch((err: any) => {
|
2021-10-08 05:31:43 -05:00
|
|
|
return Promise.reject(new Error('Unknown Plugin'));
|
2019-04-15 09:54:00 -05:00
|
|
|
});
|
|
|
|
}
|
2022-01-07 02:54:02 -06:00
|
|
|
|
|
|
|
export const clearPluginSettingsCache = (pluginId?: string) => {
|
|
|
|
if (pluginId) {
|
|
|
|
return delete pluginInfoCache[pluginId];
|
|
|
|
}
|
|
|
|
// clear all
|
|
|
|
return Object.keys(pluginInfoCache).forEach((key) => delete pluginInfoCache[key]);
|
|
|
|
};
|