12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- // @flow
-
- import { equals, ReducerRegistry, set } from '../redux';
-
- import { SET_LOG_COLLECTOR, SET_LOGGING_CONFIG } from './actionTypes';
-
- /**
- * The default/initial redux state of the feature base/logging.
- *
- * @type {{
- * config: Object
- * }}
- */
- const DEFAULT_STATE = {
- // eslint-disable-next-line
- config: require('../../../../logging_config.js'),
-
- /**
- * The log collector.
- */
- logCollector: undefined
- };
-
- ReducerRegistry.register(
- 'features/base/logging',
- (state = DEFAULT_STATE, action) => {
- switch (action.type) {
- case SET_LOGGING_CONFIG:
- return _setLoggingConfig(state, action);
- case SET_LOG_COLLECTOR: {
- return _setLogCollector(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 DEFAULT_STATE is the default configuration of the
- // feature base/logging.
- ...DEFAULT_STATE.config,
- ...action.config
- };
-
- if (equals(state.config, config)) {
- return state;
- }
-
- return {
- ...state,
- config
- };
- }
-
- /**
- * Reduces a specific Redux action SET_LOG_COLLECTOR of the feature
- * base/logging.
- *
- * @param {Object} state - The Redux state of the feature base/logging.
- * @param {Action} action - The Redux action SET_LOG_COLLECTOR to reduce.
- * @private
- * @returns {Object} The new state of the feature base/logging after the
- * reduction of the specified action.
- */
- function _setLogCollector(state, action) {
- return set(state, 'logCollector', action.logCollector);
- }
|