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.8KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. import { ReducerRegistry, set } from '../base/redux';
  2. import {
  3. CAPTURE_EVENTS,
  4. REMOTE_CONTROL_ACTIVE,
  5. SET_CONTROLLED_PARTICIPANT,
  6. SET_CONTROLLER,
  7. SET_RECEIVER_ENABLED,
  8. SET_RECEIVER_TRANSPORT,
  9. SET_REQUESTED_PARTICIPANT
  10. } from './actionTypes';
  11. /**
  12. * The default state.
  13. */
  14. const DEFAULT_STATE = {
  15. active: false,
  16. controller: {
  17. isCapturingEvents: false
  18. },
  19. receiver: {
  20. enabled: false
  21. }
  22. };
  23. /**
  24. * Listen for actions that mutate the remote control state.
  25. */
  26. ReducerRegistry.register(
  27. 'features/remote-control', (state = DEFAULT_STATE, action) => {
  28. switch (action.type) {
  29. case CAPTURE_EVENTS:
  30. return {
  31. ...state,
  32. controller: set(state.controller, 'isCapturingEvents', action.isCapturingEvents)
  33. };
  34. case REMOTE_CONTROL_ACTIVE:
  35. return set(state, 'active', action.active);
  36. case SET_RECEIVER_TRANSPORT:
  37. return {
  38. ...state,
  39. receiver: set(state.receiver, 'transport', action.transport)
  40. };
  41. case SET_RECEIVER_ENABLED:
  42. return {
  43. ...state,
  44. receiver: set(state.receiver, 'enabled', action.enabled)
  45. };
  46. case SET_REQUESTED_PARTICIPANT:
  47. return {
  48. ...state,
  49. controller: set(state.controller, 'requestedParticipant', action.requestedParticipant)
  50. };
  51. case SET_CONTROLLED_PARTICIPANT:
  52. return {
  53. ...state,
  54. controller: set(state.controller, 'controlled', action.controlled)
  55. };
  56. case SET_CONTROLLER:
  57. return {
  58. ...state,
  59. receiver: set(state.receiver, 'controller', action.controller)
  60. };
  61. }
  62. return state;
  63. },
  64. );