reducers.ts 1010 B

123456789101112131415161718192021222324252627282930313233
  1. import { Action, ActionTypes } from './actions';
  2. import { Plugin, PluginsState } from 'app/types';
  3. import { LayoutModes } from '../../../core/components/LayoutSelector/LayoutSelector';
  4. import { PluginDashboard } from '../../../types/plugins';
  5. export const initialState: PluginsState = {
  6. plugins: [] as Plugin[],
  7. searchQuery: '',
  8. layoutMode: LayoutModes.Grid,
  9. hasFetched: false,
  10. dashboards: [] as PluginDashboard[],
  11. };
  12. export const pluginsReducer = (state = initialState, action: Action): PluginsState => {
  13. switch (action.type) {
  14. case ActionTypes.LoadPlugins:
  15. return { ...state, hasFetched: true, plugins: action.payload };
  16. case ActionTypes.SetPluginsSearchQuery:
  17. return { ...state, searchQuery: action.payload };
  18. case ActionTypes.SetLayoutMode:
  19. return { ...state, layoutMode: action.payload };
  20. case ActionTypes.LoadPluginDashboards:
  21. return { ...state, dashboards: action.payload };
  22. }
  23. return state;
  24. };
  25. export default {
  26. plugins: pluginsReducer,
  27. };