grafana/public/app/features/plugins/state/actions.ts

51 lines
1.4 KiB
TypeScript
Raw Normal View History

2018-09-25 07:53:55 -05:00
import { Plugin, StoreState } from 'app/types';
import { ThunkAction } from 'redux-thunk';
import { getBackendSrv } from '../../../core/services/backend_srv';
export enum ActionTypes {
LoadPlugins = 'LOAD_PLUGINS',
2018-09-25 09:21:52 -05:00
SetPluginsSearchQuery = 'SET_PLUGIN_SEARCH_QUERY',
SetLayoutMode = 'SET_LAYOUT_MODE',
2018-09-25 07:53:55 -05:00
}
export interface LoadPluginsAction {
type: ActionTypes.LoadPlugins;
payload: Plugin[];
}
2018-09-25 09:21:52 -05:00
export interface SetPluginsSearchQueryAction {
type: ActionTypes.SetPluginsSearchQuery;
payload: string;
}
export interface SetLayoutModeAction {
type: ActionTypes.SetLayoutMode;
payload: string;
}
export const setLayoutMode = (mode: string): SetLayoutModeAction => ({
type: ActionTypes.SetLayoutMode,
payload: mode,
});
export const setPluginsSearchQuery = (query: string): SetPluginsSearchQueryAction => ({
type: ActionTypes.SetPluginsSearchQuery,
payload: query,
});
const pluginsLoaded = (plugins: Plugin[]): LoadPluginsAction => ({
2018-09-25 07:53:55 -05:00
type: ActionTypes.LoadPlugins,
payload: plugins,
});
2018-09-25 09:21:52 -05:00
export type Action = LoadPluginsAction | SetPluginsSearchQueryAction | SetLayoutModeAction;
2018-09-25 07:53:55 -05:00
type ThunkResult<R> = ThunkAction<R, StoreState, undefined, Action>;
export function loadPlugins(): ThunkResult<void> {
return async dispatch => {
const result = await getBackendSrv().get('api/plugins', { embedded: 0 });
dispatch(pluginsLoaded(result));
};
}