reducers.ts 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. import { DataSource, DataSourcesState, Plugin } from 'app/types';
  2. import { Action, ActionTypes } from './actions';
  3. import { LayoutModes } from '../../../core/components/LayoutSelector/LayoutSelector';
  4. const initialState: DataSourcesState = {
  5. dataSources: [] as DataSource[],
  6. layoutMode: LayoutModes.Grid,
  7. searchQuery: '',
  8. dataSourcesCount: 0,
  9. dataSourceTypes: [] as Plugin[],
  10. dataSourceTypeSearchQuery: '',
  11. };
  12. export const dataSourcesReducer = (state = initialState, action: Action): DataSourcesState => {
  13. switch (action.type) {
  14. case ActionTypes.LoadDataSources:
  15. return { ...state, dataSources: action.payload, dataSourcesCount: action.payload.length };
  16. case ActionTypes.SetDataSourcesSearchQuery:
  17. return { ...state, searchQuery: action.payload };
  18. case ActionTypes.SetDataSourcesLayoutMode:
  19. return { ...state, layoutMode: action.payload };
  20. case ActionTypes.LoadDataSourceTypes:
  21. return { ...state, dataSourceTypes: action.payload };
  22. case ActionTypes.SetDataSourceTypeSearchQuery:
  23. return { ...state, dataSourceTypeSearchQuery: action.payload };
  24. }
  25. return state;
  26. };
  27. export default {
  28. dataSources: dataSourcesReducer,
  29. };