reducers.ts 1.0 KB

123456789101112131415161718192021222324252627282930313233
  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. };
  11. export const dataSourcesReducer = (state = initialState, action: Action): DataSourcesState => {
  12. switch (action.type) {
  13. case ActionTypes.LoadDataSources:
  14. return { ...state, dataSources: action.payload, dataSourcesCount: action.payload.length };
  15. case ActionTypes.SetDataSourcesSearchQuery:
  16. return { ...state, searchQuery: action.payload };
  17. case ActionTypes.SetDataSourcesLayoutMode:
  18. return { ...state, layoutMode: action.payload };
  19. case ActionTypes.LoadDataSourceTypes:
  20. return { ...state, dataSourceTypes: action.payload };
  21. }
  22. return state;
  23. };
  24. export default {
  25. dataSources: dataSourcesReducer,
  26. };