12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- // @flow
-
- import {
- getParticipantById,
- getVirtualScreenshareParticipantByOwnerId,
- getVirtualScreenshareParticipantOwnerId,
- isScreenShareParticipant
- } from '../base/participants';
- import { StateListenerRegistry } from '../base/redux';
-
- import { pause, resume } from './actions';
-
- /**
- * Listens for large video participant ID changes.
- */
- StateListenerRegistry.register(
- /* selector */ state => {
- const { participantId } = state['features/large-video'];
- const { controller } = state['features/remote-control'];
- const { controlled } = controller;
-
- if (!controlled) {
- return undefined;
- }
-
- const participant = getParticipantById(state, participantId);
-
- if (isScreenShareParticipant(participant)) {
- // multistream support is enabled and the user has selected the desktop sharing thumbnail.
- const id = getVirtualScreenshareParticipantOwnerId(participantId);
-
- return id === controlled;
- }
-
- const virtualParticipant = getVirtualScreenshareParticipantByOwnerId(state, participantId);
-
- if (virtualParticipant) { // multistream is enabled and the user has selected the camera thumbnail.
- return false;
-
- }
-
- return controlled === participantId;
- },
- /* listener */ (isControlledParticipantOnStage, { dispatch }) => {
- if (isControlledParticipantOnStage === true) {
- dispatch(resume());
- } else if (isControlledParticipantOnStage === false) {
- dispatch(pause());
- }
-
- // else {
- // isControlledParticipantOnStage === undefined. Ignore!
- // }
- }
- );
|