stationOverlay.js 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. import { Map } from "immutable";
  2. import {
  3. OPEN_OVERLAY1,
  4. OPEN_OVERLAY2,
  5. OPEN_OVERLAY3,
  6. CLOSE_OVERLAY1,
  7. CLOSE_OVERLAY2,
  8. CLOSE_OVERLAY3,
  9. } from "actions/stationOverlay";
  10. const initialState = Map({
  11. overlay1: null,
  12. overlay2: null,
  13. overlay3: null,
  14. callback: null,
  15. extraProps2: null,
  16. });
  17. const actionsMap = {
  18. [OPEN_OVERLAY1]: (state, action) => {
  19. return state.merge({
  20. overlay1: action.overlay,
  21. });
  22. },
  23. [OPEN_OVERLAY2]: (state, action) => {
  24. return state.merge({
  25. overlay2: action.overlay,
  26. extraProps2: action.extraProps,
  27. });
  28. },
  29. [OPEN_OVERLAY3]: (state, action) => {
  30. return state.merge({
  31. overlay3: action.overlay,
  32. callback: action.callback,
  33. });
  34. },
  35. [CLOSE_OVERLAY1]: (state, action) => {
  36. return state.merge({
  37. overlay1: null,
  38. });
  39. },
  40. [CLOSE_OVERLAY2]: (state, action) => {
  41. return state.merge({
  42. overlay2: null,
  43. callback: null,
  44. });
  45. },
  46. [CLOSE_OVERLAY3]: (state, action) => {
  47. return state.merge({
  48. overlay3: null,
  49. });
  50. },
  51. };
  52. export default function reducer(state = initialState, action = {}) {
  53. const fn = actionsMap[action.type];
  54. return fn ? fn(state, action) : state;
  55. }