abb-core
Version:
Application Build Butler Core
69 lines (68 loc) • 2.35 kB
JavaScript
import EABBRouterActionTypes from './EABB-router-action-types';
import { List } from 'immutable';
var ABBRouterActionCreator = /** @class */ (function () {
function ABBRouterActionCreator() {
}
ABBRouterActionCreator.prototype.createRoutesReducer = function (initialState) {
return function (state, action) {
if (state === void 0) { state = initialState; }
switch (action.type) {
case EABBRouterActionTypes.ADD_ROUTE:
return Object.assign({}, state, {
routes: state.routes.insert(state.routes.size + action.offset, action.route)
});
case EABBRouterActionTypes.DELETE_ROUTE:
var routeIndex = state.routes.indexOf(action.route);
return Object.assign({}, state, {
routes: state.routes.delete(routeIndex)
});
default:
return state;
}
};
};
ABBRouterActionCreator.prototype.getReducersMapObject = function () {
return {
routesReducer: this.createRoutesReducer({
routes: List(),
})
};
};
ABBRouterActionCreator.prototype.getStateToReducerMapObject = function (state) {
return {
routesReducer: {
routes: state.routes
}
};
};
ABBRouterActionCreator.addRoutes = function (routes) {
return function (dispatch) {
routes.forEach(function (route) {
dispatch(ABBRouterActionCreator.addRoute(route));
});
return Promise.resolve();
};
};
ABBRouterActionCreator.addRoute = function (route) {
return {
route: route,
type: EABBRouterActionTypes.ADD_ROUTE,
offset: -1
};
};
ABBRouterActionCreator.setNotFoundRoute = function (route) {
return {
route: route,
type: EABBRouterActionTypes.ADD_ROUTE,
offset: 0
};
};
ABBRouterActionCreator.deleteRoute = function (route) {
return {
route: route,
type: EABBRouterActionTypes.DELETE_ROUTE
};
};
return ABBRouterActionCreator;
}());
export { ABBRouterActionCreator };