1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- // @flow
-
- import { MEDIA_TYPE, VIDEO_TYPE } from '../base/media';
- import { getLocalParticipant } from '../base/participants';
- import { StateListenerRegistry } from '../base/redux';
- import { getTrackByMediaTypeAndParticipant } from '../base/tracks';
- import { appendSuffix } from '../display-name';
- import { shouldDisplayTileView } from '../video-layout';
-
- declare var APP: Object;
- declare var interfaceConfig: Object;
-
- /**
- * StateListenerRegistry provides a reliable way of detecting changes to
- * preferred layout state and dispatching additional actions.
- */
- StateListenerRegistry.register(
- /* selector */ state => shouldDisplayTileView(state),
- /* listener */ displayTileView => {
- APP.API.notifyTileViewChanged(displayTileView);
- });
-
- StateListenerRegistry.register(
- /* selector */ state => state['features/base/settings'].displayName,
- /* listener */ (displayName, store) => {
- const localParticipant = getLocalParticipant(store.getState());
-
- // Initial setting of the display name occurs happens on app
- // initialization, before the local participant is ready. The initial
- // settings is not desired to be fired anyways, only changes.
- if (localParticipant) {
- const { id } = localParticipant;
-
- APP.API.notifyDisplayNameChanged(id, {
- displayName,
- formattedDisplayName: appendSuffix(
- displayName,
- interfaceConfig.DEFAULT_LOCAL_DISPLAY_NAME)
- });
- }
- });
-
- /**
- * Updates the on stage participant value.
- */
- StateListenerRegistry.register(
- /* selector */ state => state['features/large-video'].participantId,
- /* listener */ (participantId, store) => {
- const videoTrack = getTrackByMediaTypeAndParticipant(
- store.getState()['features/base/tracks'], MEDIA_TYPE.VIDEO, participantId);
-
- if (videoTrack && videoTrack.videoType === VIDEO_TYPE.CAMERA) {
- APP.API.notifyOnStageParticipantChanged(participantId);
- }
- }
- );
|