| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 | 
							- // @flow
 - 
 - import { setAudioOnly } from '../conference';
 - import { getLocalParticipant, participantUpdated } from '../participants';
 - import { MiddlewareRegistry } from '../redux';
 - 
 - import { SETTINGS_UPDATED } from './actionTypes';
 - 
 - /**
 -  * The middleware of the feature base/settings. Distributes changes to the state
 -  * of base/settings to the states of other features computed from the state of
 -  * base/settings.
 -  *
 -  * @param {Store} store - The redux store.
 -  * @returns {Function}
 -  */
 - MiddlewareRegistry.register(store => next => action => {
 -     const result = next(action);
 - 
 -     switch (action.type) {
 -     case SETTINGS_UPDATED:
 -         _maybeSetAudioOnly(store, action);
 -         _updateLocalParticipant(store, action);
 -     }
 - 
 -     return result;
 - });
 - 
 - /**
 -  * Maps the settings field names to participant names where they don't match.
 -  * Currently there is only one such field, but may be extended in the future.
 -  *
 -  * @private
 -  * @param {string} settingsField - The name of the settings field to map.
 -  * @returns {string}
 -  */
 - function _mapSettingsFieldToParticipant(settingsField) {
 -     switch (settingsField) {
 -     case 'displayName':
 -         return 'name';
 -     }
 - 
 -     return settingsField;
 - }
 - 
 - /**
 -  * Updates {@code startAudioOnly} flag if it's updated in the settings.
 -  *
 -  * @param {Store} store - The redux store.
 -  * @param {Object} action - The redux action.
 -  * @private
 -  * @returns {void}
 -  */
 - function _maybeSetAudioOnly(
 -         { dispatch },
 -         { settings: { startAudioOnly } }) {
 -     if (typeof startAudioOnly === 'boolean') {
 -         dispatch(setAudioOnly(startAudioOnly));
 -     }
 - }
 - 
 - /**
 -  * Updates the local participant according to settings changes.
 -  *
 -  * @param {Store} store - The redux store.
 -  * @param {Object} action - The dispatched action.
 -  * @private
 -  * @returns {void}
 -  */
 - function _updateLocalParticipant({ dispatch, getState }, action) {
 -     const { settings } = action;
 -     const localParticipant = getLocalParticipant(getState());
 -     const newLocalParticipant = {
 -         ...localParticipant
 -     };
 - 
 -     for (const key in settings) {
 -         if (settings.hasOwnProperty(key)) {
 -             newLocalParticipant[_mapSettingsFieldToParticipant(key)]
 -                 = settings[key];
 -         }
 -     }
 - 
 -     dispatch(participantUpdated(newLocalParticipant));
 - }
 
 
  |