reducers.ts 814 B

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