volume.js 684 B

1234567891011121314151617181920212223242526272829303132333435
  1. import { Map } from "immutable";
  2. import {
  3. INITIALIZE,
  4. CHANGE_VOLUME,
  5. CHANGE_VOLUME_MUTED,
  6. } from "actions/volume";
  7. const initialState = Map({
  8. volume: 0,
  9. muted: false, //TODO Store muted and initialize it
  10. });
  11. const actionsMap = {
  12. [INITIALIZE]: (state, action) => {
  13. return state.merge({
  14. volume: action.volume,
  15. });
  16. },
  17. [CHANGE_VOLUME]: (state, action) => {
  18. return state.merge({
  19. volume: action.volume,
  20. });
  21. },
  22. [CHANGE_VOLUME_MUTED]: (state, action) => {
  23. return state.merge({
  24. muted: action.muted,
  25. });
  26. },
  27. };
  28. export default function reducer(state = initialState, action = {}) {
  29. const fn = actionsMap[action.type];
  30. return fn ? fn(state, action) : state;
  31. }