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.ts 2.3KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. import ReducerRegistry from '../base/redux/ReducerRegistry';
  2. import { set } from '../base/redux/functions';
  3. import {
  4. CAPTURE_EVENTS,
  5. REMOTE_CONTROL_ACTIVE,
  6. SET_CONTROLLED_PARTICIPANT,
  7. SET_CONTROLLER,
  8. SET_RECEIVER_ENABLED,
  9. SET_RECEIVER_TRANSPORT,
  10. SET_REQUESTED_PARTICIPANT
  11. } from './actionTypes';
  12. /**
  13. * The default state.
  14. */
  15. const DEFAULT_STATE = {
  16. active: false,
  17. controller: {
  18. isCapturingEvents: false
  19. },
  20. receiver: {
  21. enabled: false
  22. }
  23. };
  24. export interface IRemoteControlState {
  25. active: boolean;
  26. controller: {
  27. controlled?: string;
  28. isCapturingEvents: boolean;
  29. requestedParticipant?: string;
  30. };
  31. receiver: {
  32. controller?: string;
  33. enabled: boolean;
  34. transport?: {
  35. dispose: Function;
  36. on: Function;
  37. sendEvent: Function;
  38. sendRequest: Function;
  39. };
  40. };
  41. }
  42. /**
  43. * Listen for actions that mutate the remote control state.
  44. */
  45. ReducerRegistry.register<IRemoteControlState>(
  46. 'features/remote-control', (state = DEFAULT_STATE, action): IRemoteControlState => {
  47. switch (action.type) {
  48. case CAPTURE_EVENTS:
  49. return {
  50. ...state,
  51. controller: set(state.controller, 'isCapturingEvents', action.isCapturingEvents)
  52. };
  53. case REMOTE_CONTROL_ACTIVE:
  54. return set(state, 'active', action.active);
  55. case SET_RECEIVER_TRANSPORT:
  56. return {
  57. ...state,
  58. receiver: set(state.receiver, 'transport', action.transport)
  59. };
  60. case SET_RECEIVER_ENABLED:
  61. return {
  62. ...state,
  63. receiver: set(state.receiver, 'enabled', action.enabled)
  64. };
  65. case SET_REQUESTED_PARTICIPANT:
  66. return {
  67. ...state,
  68. controller: set(state.controller, 'requestedParticipant', action.requestedParticipant)
  69. };
  70. case SET_CONTROLLED_PARTICIPANT:
  71. return {
  72. ...state,
  73. controller: set(state.controller, 'controlled', action.controlled)
  74. };
  75. case SET_CONTROLLER:
  76. return {
  77. ...state,
  78. receiver: set(state.receiver, 'controller', action.controller)
  79. };
  80. }
  81. return state;
  82. }
  83. );