You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

reducer.js 1.4KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. /* @flow */
  2. import { ReducerRegistry, set } from '../../base/redux';
  3. import {
  4. _ADD_NETWORK_REQUEST,
  5. _REMOVE_ALL_NETWORK_REQUESTS,
  6. _REMOVE_NETWORK_REQUEST
  7. } from './actionTypes';
  8. /**
  9. * The initial redux state of the feature network-activity.
  10. *
  11. * @type {{
  12. * requests: Map
  13. * }}
  14. */
  15. const _INITIAL_STATE = {
  16. /**
  17. * The ongoing network requests i.e. the network request which have been
  18. * added to the redux store/state and have not been removed.
  19. *
  20. * @type {Map}
  21. */
  22. requests: new Map()
  23. };
  24. ReducerRegistry.register(
  25. 'features/network-activity',
  26. (state = _INITIAL_STATE, action) => {
  27. switch (action.type) {
  28. case _ADD_NETWORK_REQUEST: {
  29. const {
  30. type, // eslint-disable-line no-unused-vars
  31. request: key,
  32. ...value
  33. } = action;
  34. const requests = new Map(state.requests);
  35. requests.set(key, value);
  36. return set(state, 'requests', requests);
  37. }
  38. case _REMOVE_ALL_NETWORK_REQUESTS:
  39. return set(state, 'requests', _INITIAL_STATE.requests);
  40. case _REMOVE_NETWORK_REQUEST: {
  41. const { request: key } = action;
  42. const requests = new Map(state.requests);
  43. requests.delete(key);
  44. return set(state, 'requests', requests);
  45. }
  46. }
  47. return state;
  48. });