diff --git a/config.js b/config.js index 69673da5f3780..3c5745a69708d 100644 --- a/config.js +++ b/config.js @@ -74,6 +74,9 @@ var config = { // Disables the reactions feature. // disableReactions: true, + // Disables moderator indicators. + // disableModeratorIndicator: false, + // Disables polls feature. // disablePolls: false, diff --git a/interface_config.js b/interface_config.js index 021dc839807fd..2ccbd8148af99 100644 --- a/interface_config.js +++ b/interface_config.js @@ -39,7 +39,8 @@ var interfaceConfig = { DISABLE_DOMINANT_SPEAKER_INDICATOR: false, - DISABLE_FOCUS_INDICATOR: false, + // Deprecated. Please use disableModeratorIndicator from config.js + // DISABLE_FOCUS_INDICATOR: false, /** * If true, notifications regarding joining/leaving are no longer displayed. diff --git a/lang/main.json b/lang/main.json index 7eb57fbfa4673..ac88e9b220585 100644 --- a/lang/main.json +++ b/lang/main.json @@ -565,7 +565,7 @@ "mutedTitle": "You're muted!", "mutedRemotelyTitle": "You've been muted by {{moderator}}", "mutedRemotelyDescription": "You can always unmute when you're ready to speak. Mute back when you're done to keep noise away from the meeting.", - "videoMutedRemotelyTitle": "Your camera has been turned off by {{moderator}}", + "videoMutedRemotelyTitle": "Your video has been turned off by {{moderator}}", "videoMutedRemotelyDescription": "You can always turn it on again.", "passwordRemovedRemotely": "$t(lockRoomPasswordUppercase) removed by another participant", "passwordSetRemotely": "$t(lockRoomPasswordUppercase) set by another participant", diff --git a/react/features/base/config/configWhitelist.js b/react/features/base/config/configWhitelist.js index 7226d3f7a0445..bcde89bc6096a 100644 --- a/react/features/base/config/configWhitelist.js +++ b/react/features/base/config/configWhitelist.js @@ -96,6 +96,7 @@ export default [ 'disableIncomingMessageSound', 'disableJoinLeaveSounds', 'disableLocalVideoFlip', + 'disableModeratorIndicator', 'disableNS', 'disablePolls', 'disableProfile', diff --git a/react/features/base/config/reducer.js b/react/features/base/config/reducer.js index 50ee650043dfa..a22edffa28719 100644 --- a/react/features/base/config/reducer.js +++ b/react/features/base/config/reducer.js @@ -286,6 +286,12 @@ function _translateLegacyConfig(oldValue: Object) { }; } + if (oldValue.disableModeratorIndicator === undefined + && typeof interfaceConfig === 'object' + && interfaceConfig.hasOwnProperty('DISABLE_FOCUS_INDICATOR')) { + newValue.disableModeratorIndicator = interfaceConfig.DISABLE_FOCUS_INDICATOR; + } + return newValue; } diff --git a/react/features/filmstrip/components/web/StatusIndicators.js b/react/features/filmstrip/components/web/StatusIndicators.js index cbaf346f0282a..f2edfe2157f19 100644 --- a/react/features/filmstrip/components/web/StatusIndicators.js +++ b/react/features/filmstrip/components/web/StatusIndicators.js @@ -129,11 +129,13 @@ function _mapStateToProps(state, ownProps) { isAudioMuted = isRemoteTrackMuted(tracks, MEDIA_TYPE.AUDIO, participantID); } + const { disableModeratorIndicator } = state['features/base/config']; + return { _currentLayout: getCurrentLayout(state), _showAudioMutedIndicator: isAudioMuted, _showModeratorIndicator: - !interfaceConfig.DISABLE_FOCUS_INDICATOR && participant && participant.role === PARTICIPANT_ROLE.MODERATOR, + !disableModeratorIndicator && participant && participant.role === PARTICIPANT_ROLE.MODERATOR, _showScreenShareIndicator: isScreenSharing, _showVideoMutedIndicator: isVideoMuted }; diff --git a/react/features/notifications/middleware.js b/react/features/notifications/middleware.js index c537fd0f58c2c..b6bf69962a4db 100644 --- a/react/features/notifications/middleware.js +++ b/react/features/notifications/middleware.js @@ -69,13 +69,14 @@ MiddlewareRegistry.register(store => next => action => { return next(action); } case PARTICIPANT_UPDATED: { - if (typeof interfaceConfig === 'undefined') { - // Do not show the notification for mobile and also when the focus indicator is disabled. + const state = store.getState(); + const { disableModeratorIndicator } = state['features/base/config']; + + if (disableModeratorIndicator) { return next(action); } const { id, role } = action.participant; - const state = store.getState(); const localParticipant = getLocalParticipant(state); if (localParticipant.id !== id) {