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

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  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?: Object;
  35. };
  36. }
  37. /**
  38. * Listen for actions that mutate the remote control state.
  39. */
  40. ReducerRegistry.register<IRemoteControlState>(
  41. 'features/remote-control', (state = DEFAULT_STATE, action): IRemoteControlState => {
  42. switch (action.type) {
  43. case CAPTURE_EVENTS:
  44. return {
  45. ...state,
  46. controller: set(state.controller, 'isCapturingEvents', action.isCapturingEvents)
  47. };
  48. case REMOTE_CONTROL_ACTIVE:
  49. return set(state, 'active', action.active);
  50. case SET_RECEIVER_TRANSPORT:
  51. return {
  52. ...state,
  53. receiver: set(state.receiver, 'transport', action.transport)
  54. };
  55. case SET_RECEIVER_ENABLED:
  56. return {
  57. ...state,
  58. receiver: set(state.receiver, 'enabled', action.enabled)
  59. };
  60. case SET_REQUESTED_PARTICIPANT:
  61. return {
  62. ...state,
  63. controller: set(state.controller, 'requestedParticipant', action.requestedParticipant)
  64. };
  65. case SET_CONTROLLED_PARTICIPANT:
  66. return {
  67. ...state,
  68. controller: set(state.controller, 'controlled', action.controlled)
  69. };
  70. case SET_CONTROLLER:
  71. return {
  72. ...state,
  73. receiver: set(state.receiver, 'controller', action.controller)
  74. };
  75. }
  76. return state;
  77. }
  78. );