configureStore.ts 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. import { createStore, applyMiddleware, compose, combineReducers } from 'redux';
  2. import thunk from 'redux-thunk';
  3. import { createLogger } from 'redux-logger';
  4. import sharedReducers from 'app/core/reducers';
  5. import alertingReducers from 'app/features/alerting/state/reducers';
  6. import teamsReducers from 'app/features/teams/state/reducers';
  7. import apiKeysReducers from 'app/features/api-keys/state/reducers';
  8. import foldersReducers from 'app/features/folders/state/reducers';
  9. import dashboardReducers from 'app/features/dashboard/state/reducers';
  10. import exploreReducers from 'app/features/explore/state/reducers';
  11. import pluginReducers from 'app/features/plugins/state/reducers';
  12. import dataSourcesReducers from 'app/features/datasources/state/reducers';
  13. import usersReducers from 'app/features/users/state/reducers';
  14. import userReducers from 'app/features/profile/state/reducers';
  15. import organizationReducers from 'app/features/org/state/reducers';
  16. import ldapReducers from 'app/features/admin/state/reducers';
  17. import { setStore } from './store';
  18. import { StoreState } from 'app/types/store';
  19. import { toggleLogActionsMiddleware } from 'app/core/middlewares/application';
  20. const rootReducers = {
  21. ...sharedReducers,
  22. ...alertingReducers,
  23. ...teamsReducers,
  24. ...apiKeysReducers,
  25. ...foldersReducers,
  26. ...dashboardReducers,
  27. ...exploreReducers,
  28. ...pluginReducers,
  29. ...dataSourcesReducers,
  30. ...usersReducers,
  31. ...userReducers,
  32. ...organizationReducers,
  33. ...ldapReducers,
  34. };
  35. export function addRootReducer(reducers: any) {
  36. Object.assign(rootReducers, ...reducers);
  37. }
  38. export function configureStore() {
  39. const composeEnhancers = (window as any).__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || compose;
  40. const rootReducer = combineReducers(rootReducers);
  41. const logger = createLogger({
  42. predicate: (getState: () => StoreState) => {
  43. return getState().application.logActions;
  44. },
  45. });
  46. const storeEnhancers =
  47. process.env.NODE_ENV !== 'production'
  48. ? applyMiddleware(toggleLogActionsMiddleware, thunk, logger)
  49. : applyMiddleware(thunk);
  50. const store = createStore(rootReducer, {}, composeEnhancers(storeEnhancers));
  51. setStore(store);
  52. return store;
  53. }