application/redux/reducers/global-history-reducers.js
import Immutable from 'immutable';
import {
GLOBAL_HISTORY_PUSH,
GLOBAL_HISTORY_POP
} from './../actions/global-history-actions';
export function globalHistory(state = null, action) {
if (state === null) {
state = {
items: Immutable.fromJS([]).toList(),
selected: null
};
}
switch (action.type) {
case GLOBAL_HISTORY_POP:
if (!action.payload) {
return Object.assign({}, state, {
items: state.items.pop()
});
}
return Object.assign({}, state, {
items: state.items.filter((item) => item.get('uuid') != action.payload)
});
case GLOBAL_HISTORY_PUSH:
// remove it from the stack wherever it may be and push it back onto the top
return Object.assign({}, state, {
items: state.items
.filter((item) => item.get('uuid') != action.payload.uuid)
.unshift(Immutable.fromJS(action.payload))
});
}
return state;
};