Lyubo Marinov 7836fd1990 Introduce features/base/logging
The functionality around logging including logging_config.js i.e.
loggingConfig and the other classes and/or functions that initialize
loggers for Jits Meet truly deserves a feature of its own. Start getting
in that direction on both Web and mobile by introducing
features/base/logging and bringing loggingConfig to mobile.
2017-04-23 23:30:53 -05:00

62 lines
1.5 KiB
JavaScript

import { equals, ReducerRegistry } from '../redux';
import { SET_LOGGING_CONFIG } from './actionTypes';
/**
* The initial state of the feature base/logging.
*
* @type {{
* config: Object
* }}
*/
const INITIAL_STATE = {
config: {
defaultLogLevel: 'trace',
// The following are too verbose in their logging with the
// {@link #defaultLogLevel}:
'modules/statistics/CallStats.js': 'info',
'modules/xmpp/strophe.util.js': 'log'
}
};
ReducerRegistry.register(
'features/base/logging',
(state = INITIAL_STATE, action) => {
switch (action.type) {
case SET_LOGGING_CONFIG:
return _setLoggingConfig(state, action);
default:
return state;
}
});
/**
* Reduces a specific Redux action SET_LOGGING_CONFIG of the feature
* base/logging.
*
* @param {Object} state - The Redux state of the feature base/logging.
* @param {Action} action - The Redux action SET_LOGGING_CONFIG to reduce.
* @private
* @returns {Object} The new state of the feature base/logging after the
* reduction of the specified action.
*/
function _setLoggingConfig(state, action) {
const config = {
// The config of INITIAL_STATE is the default configuration of the
// feature base/logging.
...INITIAL_STATE.config,
...action.config
};
if (equals(state.config, config)) {
return state;
}
return {
...state,
config
};
}