UNPKG

mattermost-redux

Version:

Common code (API client, Redux stores, logic, utility functions) for building a Mattermost client

36 lines (35 loc) 1.41 kB
"use strict"; // Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See LICENSE.txt for license information. var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.createReducer = createReducer; const redux_1 = require("redux"); const redux_batched_actions_1 = require("redux-batched-actions"); const deep_freeze_1 = __importDefault(require("mattermost-redux/utils/deep_freeze")); function createReducer(...reducerSets) { // Merge each dictionary of reducers into a single combined reducer let reducer = (0, redux_1.combineReducers)(reducerSets.reduce((fullSet, reducerSet) => { return { ...fullSet, ...reducerSet }; }, {})); reducer = (0, redux_batched_actions_1.enableBatching)(reducer); reducer = enableFreezing(reducer); return reducer; } function enableFreezing(reducer) { // Skip the overhead of freezing in production. // eslint-disable-next-line no-process-env if (process.env.NODE_ENV === 'production') { return reducer; } const frozenReducer = (state, action) => { const nextState = reducer(state, action); if (nextState !== state) { (0, deep_freeze_1.default)(nextState); } return nextState; }; return frozenReducer; }