reducers.ts 1.2 KB

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