46 lines
1.4 KiB
JavaScript
46 lines
1.4 KiB
JavaScript
// @flow
|
|
|
|
import { getCurrentConference } from '../base/conference';
|
|
import { isLocalParticipantModerator } from '../base/participants';
|
|
import { StateListenerRegistry } from '../base/redux';
|
|
|
|
import { MUTE_REACTIONS_COMMAND } from './constants';
|
|
|
|
/**
|
|
* Subscribes to changes to the Mute Reaction Sounds setting for the local participant to
|
|
* notify remote participants of current user interface status.
|
|
* Changing newSelectedValue param to off, when feature is turned of so we can
|
|
* notify all listeners.
|
|
*/
|
|
StateListenerRegistry.register(
|
|
/* selector */ state => state['features/base/conference'].startReactionsMuted,
|
|
/* listener */ (newSelectedValue, store) => _sendMuteReactionsCommand(newSelectedValue || false, store));
|
|
|
|
|
|
/**
|
|
* Sends the mute-reactions command, when a local property change occurs.
|
|
*
|
|
* @param {*} newSelectedValue - The changed selected value from the selector.
|
|
* @param {Object} store - The redux store.
|
|
* @private
|
|
* @returns {void}
|
|
*/
|
|
function _sendMuteReactionsCommand(newSelectedValue, store) {
|
|
const state = store.getState();
|
|
const conference = getCurrentConference(state);
|
|
|
|
if (!conference) {
|
|
return;
|
|
}
|
|
|
|
// Only a moderator is allowed to send commands.
|
|
if (!isLocalParticipantModerator(state)) {
|
|
return;
|
|
}
|
|
|
|
conference.sendCommand(
|
|
MUTE_REACTIONS_COMMAND,
|
|
{ attributes: { startReactionsMuted: Boolean(newSelectedValue) } }
|
|
);
|
|
}
|