actions.ts 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. import { Plugin, StoreState } from 'app/types';
  2. import { ThunkAction } from 'redux-thunk';
  3. import { getBackendSrv } from '../../../core/services/backend_srv';
  4. export enum ActionTypes {
  5. LoadPlugins = 'LOAD_PLUGINS',
  6. SetPluginsSearchQuery = 'SET_PLUGIN_SEARCH_QUERY',
  7. SetLayoutMode = 'SET_LAYOUT_MODE',
  8. }
  9. export interface LoadPluginsAction {
  10. type: ActionTypes.LoadPlugins;
  11. payload: Plugin[];
  12. }
  13. export interface SetPluginsSearchQueryAction {
  14. type: ActionTypes.SetPluginsSearchQuery;
  15. payload: string;
  16. }
  17. export interface SetLayoutModeAction {
  18. type: ActionTypes.SetLayoutMode;
  19. payload: string;
  20. }
  21. export const setLayoutMode = (mode: string): SetLayoutModeAction => ({
  22. type: ActionTypes.SetLayoutMode,
  23. payload: mode,
  24. });
  25. export const setPluginsSearchQuery = (query: string): SetPluginsSearchQueryAction => ({
  26. type: ActionTypes.SetPluginsSearchQuery,
  27. payload: query,
  28. });
  29. const pluginsLoaded = (plugins: Plugin[]): LoadPluginsAction => ({
  30. type: ActionTypes.LoadPlugins,
  31. payload: plugins,
  32. });
  33. export type Action = LoadPluginsAction | SetPluginsSearchQueryAction | SetLayoutModeAction;
  34. type ThunkResult<R> = ThunkAction<R, StoreState, undefined, Action>;
  35. export function loadPlugins(): ThunkResult<void> {
  36. return async dispatch => {
  37. const result = await getBackendSrv().get('api/plugins', { embedded: 0 });
  38. dispatch(pluginsLoaded(result));
  39. };
  40. }