From 2d73e9ace4b0362fae22c54e54f8b5fe64f053a6 Mon Sep 17 00:00:00 2001 From: Lyubo Marinov Date: Mon, 9 Oct 2017 10:03:02 -0500 Subject: [PATCH] Flow, coding style --- react/features/base/conference/middleware.js | 2 +- react/features/base/participants/actions.js | 65 ++++++++++---------- react/features/large-video/actions.js | 26 ++++---- react/features/large-video/middleware.js | 10 ++- react/features/large-video/reducer.js | 2 + 5 files changed, 54 insertions(+), 51 deletions(-) diff --git a/react/features/base/conference/middleware.js b/react/features/base/conference/middleware.js index 7f91a57973..28c964e02c 100644 --- a/react/features/base/conference/middleware.js +++ b/react/features/base/conference/middleware.js @@ -185,7 +185,7 @@ function _pinParticipant(store, next, action) { let videoType; if ((participantById && participantById.local) - || (!id && pinnedParticipant && pinnedParticipant.local)) { + || (!id && pinnedParticipant && pinnedParticipant.local)) { videoType = 'local'; } else { videoType = 'remote'; diff --git a/react/features/base/participants/actions.js b/react/features/base/participants/actions.js index f3cf22ac6f..bf006d6fe9 100644 --- a/react/features/base/participants/actions.js +++ b/react/features/base/participants/actions.js @@ -32,6 +32,22 @@ export function dominantSpeakerChanged(id) { }; } +/** + * Create an action for removing a participant from the conference. + * + * @param {string} id - Participant's ID. + * @returns {{ + * type: KICK_PARTICIPANT, + * id: string + * }} + */ +export function kickParticipant(id) { + return { + type: KICK_PARTICIPANT, + id + }; +} + /** * Creates an action to signal the connection status of the local participant * has changed. @@ -47,27 +63,12 @@ export function localParticipantConnectionStatusChanged(connectionStatus) { if (participant) { return dispatch(participantConnectionStatusChanged( - participant.id, connectionStatus)); + participant.id, + connectionStatus)); } }; } -/** - * Create an action for removing a participant from the conference. - * - * @param {string} id - Participant's ID. - * @returns {{ - * type: KICK_PARTICIPANT, - * id: string - * }} - */ -export function kickParticipant(id) { - return { - type: KICK_PARTICIPANT, - id - }; -} - /** * Action to signal that the ID of local participant has changed. It happens * when the local participant joins a new conference or leaves an existing @@ -106,6 +107,21 @@ export function localParticipantJoined(participant = {}) { }); } +/** + * Action to remove a local participant. + * + * @returns {Function} + */ +export function localParticipantLeft() { + return (dispatch, getState) => { + const participant = getLocalParticipant(getState); + + if (participant) { + return dispatch(participantLeft(participant.id)); + } + }; +} + /** * Action to signal the role of the local participant has changed. It can happen * when the participant has joined a conference, even before a non-default local @@ -164,21 +180,6 @@ export function participantConnectionStatusChanged(id, connectionStatus) { }; } -/** - * Action to remove a local participant. - * - * @returns {Function} - */ -export function localParticipantLeft() { - return (dispatch, getState) => { - const participant = getLocalParticipant(getState); - - if (participant) { - return dispatch(participantLeft(participant.id)); - } - }; -} - /** * Action to signal that a participant's display name has changed. * diff --git a/react/features/large-video/actions.js b/react/features/large-video/actions.js index b5b349e61b..f85f97b674 100644 --- a/react/features/large-video/actions.js +++ b/react/features/large-video/actions.js @@ -110,33 +110,35 @@ function _electLastVisibleRemoteVideo(tracks) { * @returns {(string|undefined)} */ function _electParticipantInLargeVideo(state) { - // First get the pinned participant. If a participant is pinned, they will - // be shown in the LargeVideo. + // 1. If a participant is pinned, they will be shown in the LargeVideo ( + // regardless of whether they are local or remote). const participants = state['features/base/participants']; let participant = participants.find(p => p.pinned); let id = participant && participant.id; if (!id) { - // No participant is pinned so get the dominant speaker. But the local - // participant won't be displayed in LargeVideo even if he/she is the - // dominant speaker. + // 2. No participant is pinned so get the dominant speaker. But the + // local participant won't be displayed in LargeVideo even if she is + // the dominant speaker. participant = participants.find(p => p.dominantSpeaker && !p.local); id = participant && participant.id; if (!id) { - // There is no dominant speaker so select the participant which last - // had visible video (excluding ourselves). + // 3. There is no dominant speaker so select the remote participant + // who last had visible video. const tracks = state['features/base/tracks']; const videoTrack = _electLastVisibleRemoteVideo(tracks); id = videoTrack && videoTrack.participantId; if (!id) { - // It's possible there is no participant with visible video, - // this can happen for a number or reasons: - // - there is only one participant (the local user) - // - other participants joined with video muted - // As a last resort, pick the last participant. + // 4. It's possible there is no participant with visible video. + // This can happen for a number of reasons: + // - there is only one participant (i.e. the local user), + // - other participants joined with video muted. + // As a last resort, pick the last participant who joined the + // conference (regardless of whether they are local or + // remote). participant = participants[participants.length - 1]; id = participant && participant.id; } diff --git a/react/features/large-video/middleware.js b/react/features/large-video/middleware.js index b30d646396..7840e2cee7 100644 --- a/react/features/large-video/middleware.js +++ b/react/features/large-video/middleware.js @@ -1,3 +1,5 @@ +// @flow + import { DOMINANT_SPEAKER_CHANGED, PARTICIPANT_JOINED, @@ -12,10 +14,7 @@ import { TRACK_UPDATED } from '../base/tracks'; -import { - selectParticipant, - selectParticipantInLargeVideo -} from './actions'; +import { selectParticipant, selectParticipantInLargeVideo } from './actions'; /** * Middleware that catches actions related to participants and tracks and @@ -37,7 +36,7 @@ MiddlewareRegistry.register(store => next => action => { store.dispatch(selectParticipantInLargeVideo()); break; - case TRACK_UPDATED: { + case TRACK_UPDATED: // In order to minimize re-calculations, we need to select participant // only if the videoType of the current participant rendered in // LargeVideo has changed. @@ -54,7 +53,6 @@ MiddlewareRegistry.register(store => next => action => { } break; } - } return result; }); diff --git a/react/features/large-video/reducer.js b/react/features/large-video/reducer.js index 2b2ae8b432..ebee066d17 100644 --- a/react/features/large-video/reducer.js +++ b/react/features/large-video/reducer.js @@ -1,3 +1,5 @@ +// @flow + import { PARTICIPANT_ID_CHANGED } from '../base/participants'; import { ReducerRegistry } from '../base/redux';