| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- // @flow
-
- import {
- getParticipantById,
- getVirtualScreenshareParticipantByOwnerId,
- getVirtualScreenshareParticipantOwnerId
- } 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 (participant?.isVirtualScreenshareParticipant) {
- // 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!
- // }
- }
- );
|