feat(Panes): Do not update state if panes are the same

This reduces the number of updates required when transitioning between
challenges while preserving the state of the panes when going from two
similar challengees.
This commit is contained in:
Berkeley Martinez
2018-01-16 09:49:36 -08:00
parent 62e079c721
commit 2c7e571520

View File

@ -166,24 +166,22 @@ export default function createPanesAspects({ createPanesMap }) {
const panesMap = action.meta.panesMap;
const panes = _.map(panesMap, (name, type) => ({ name, type }));
const numOfPanes = Object.keys(panes).length;
const panesByName = _.isEqual(state.panes, panes) && state.panesByName;
if (_.isEqual(state.panes, panes)) {
return state;
}
return {
...state,
panesMap,
panes,
panesByName: panesByName
? panesByName
: panes.reduce((panes, { name }, index) => {
const dividerLeft = utils.getDividerLeft(numOfPanes, index);
panes[name] = {
name,
dividerLeft,
isHidden: false
};
return panes;
},
{}
)
panesByName: panes.reduce((panes, { name }, index) => {
const dividerLeft = utils.getDividerLeft(numOfPanes, index);
panes[name] = {
name,
dividerLeft,
isHidden: false
};
return panes;
}, {})
};
}
if (action.meta && action.meta.isPaneAction) {