Meilleure gestion arbre immutable
This commit is contained in:
@ -1,4 +1,5 @@
|
||||
var Util = require('../../util');
|
||||
var Tree = require('../../util/tree');
|
||||
var logger = Util.Logger;
|
||||
var path = require('path');
|
||||
var _ = require('lodash');
|
||||
@ -111,10 +112,33 @@ exports.selectProfileItem = function(item) {
|
||||
};
|
||||
|
||||
exports.updateProfileItem = function(item, key, value) {
|
||||
return {
|
||||
type: UPDATE_PROFILE_ITEM,
|
||||
item: item,
|
||||
key: key,
|
||||
value: value
|
||||
return function(dispatch, getState) {
|
||||
|
||||
var state = getState();
|
||||
var selectedPath, tree;
|
||||
|
||||
// If the item is selected, save its path
|
||||
if(state.selectedItem === item) {
|
||||
tree = new Tree(state.profile);
|
||||
var result = tree.find(item);
|
||||
selectedPath = result.path;
|
||||
}
|
||||
|
||||
dispatch({
|
||||
type: UPDATE_PROFILE_ITEM,
|
||||
item: item,
|
||||
key: key,
|
||||
value: value
|
||||
});
|
||||
|
||||
// Re-select item if needed
|
||||
if(selectedPath) {
|
||||
state = getState();
|
||||
tree = new Tree(state.profile);
|
||||
var selectedItem = tree.get(selectedPath);
|
||||
dispatch(exports.selectProfileItem(selectedItem));
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
};
|
||||
|
Reference in New Issue
Block a user