12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- import ReducerRegistry from '../base/redux/ReducerRegistry';
- import { set } from '../base/redux/functions';
-
- import {
- CAPTURE_EVENTS,
- REMOTE_CONTROL_ACTIVE,
- SET_CONTROLLED_PARTICIPANT,
- SET_CONTROLLER,
- SET_RECEIVER_ENABLED,
- SET_RECEIVER_TRANSPORT,
- SET_REQUESTED_PARTICIPANT
- } from './actionTypes';
-
- /**
- * The default state.
- */
- const DEFAULT_STATE = {
- active: false,
- controller: {
- isCapturingEvents: false
- },
- receiver: {
- enabled: false
- }
- };
-
- export interface IRemoteControlState {
- active: boolean;
- controller: {
- controlled?: string;
- isCapturingEvents: boolean;
- requestedParticipant?: string;
- };
- receiver: {
- controller?: string;
- enabled: boolean;
- transport?: {
- dispose: Function;
- on: Function;
- sendEvent: Function;
- sendRequest: Function;
- };
- };
- }
-
- /**
- * Listen for actions that mutate the remote control state.
- */
- ReducerRegistry.register<IRemoteControlState>(
- 'features/remote-control', (state = DEFAULT_STATE, action): IRemoteControlState => {
- switch (action.type) {
- case CAPTURE_EVENTS:
- return {
- ...state,
- controller: set(state.controller, 'isCapturingEvents', action.isCapturingEvents)
- };
- case REMOTE_CONTROL_ACTIVE:
- return set(state, 'active', action.active);
- case SET_RECEIVER_TRANSPORT:
- return {
- ...state,
- receiver: set(state.receiver, 'transport', action.transport)
- };
- case SET_RECEIVER_ENABLED:
- return {
- ...state,
- receiver: set(state.receiver, 'enabled', action.enabled)
- };
- case SET_REQUESTED_PARTICIPANT:
- return {
- ...state,
- controller: set(state.controller, 'requestedParticipant', action.requestedParticipant)
- };
- case SET_CONTROLLED_PARTICIPANT:
- return {
- ...state,
- controller: set(state.controller, 'controlled', action.controlled)
- };
- case SET_CONTROLLER:
- return {
- ...state,
- receiver: set(state.receiver, 'controller', action.controller)
- };
- }
-
- return state;
- }
- );
|