reducers.ts 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  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. dataSource: {} as DataSource,
  7. layoutMode: LayoutModes.Grid,
  8. searchQuery: '',
  9. dataSourcesCount: 0,
  10. dataSourceTypes: [] as Plugin[],
  11. dataSourceTypeSearchQuery: '',
  12. hasFetched: false,
  13. dataSourceMeta: {} as Plugin,
  14. };
  15. export const dataSourcesReducer = (state = initialState, action: Action): DataSourcesState => {
  16. switch (action.type) {
  17. case ActionTypes.LoadDataSources:
  18. return { ...state, hasFetched: true, dataSources: action.payload, dataSourcesCount: action.payload.length };
  19. case ActionTypes.LoadDataSource:
  20. return { ...state, dataSource: action.payload };
  21. case ActionTypes.SetDataSourcesSearchQuery:
  22. return { ...state, searchQuery: action.payload };
  23. case ActionTypes.SetDataSourcesLayoutMode:
  24. return { ...state, layoutMode: action.payload };
  25. case ActionTypes.LoadDataSourceTypes:
  26. return { ...state, dataSourceTypes: action.payload };
  27. case ActionTypes.SetDataSourceTypeSearchQuery:
  28. return { ...state, dataSourceTypeSearchQuery: action.payload };
  29. case ActionTypes.LoadDataSourceMeta:
  30. return { ...state, dataSourceMeta: action.payload };
  31. case ActionTypes.SetDataSourceName:
  32. return { ...state, dataSource: { ...state.dataSource, name: action.payload } };
  33. }
  34. return state;
  35. };
  36. export default {
  37. dataSources: dataSourcesReducer,
  38. };