twreporter-redux
Version:
redux actions and reducers for twreporter website
119 lines (89 loc) • 3.72 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _actionTypes = require('../constants/action-types');
var _actionTypes2 = _interopRequireDefault(_actionTypes);
var _reduxStateFieldNames = require('../constants/redux-state-field-names');
var _reduxStateFieldNames2 = _interopRequireDefault(_reduxStateFieldNames);
var _concat = require('lodash/concat');
var _concat2 = _interopRequireDefault(_concat);
var _get = require('lodash/get');
var _get2 = _interopRequireDefault(_get);
var _map = require('lodash/map');
var _map2 = _interopRequireDefault(_map);
var _merge = require('lodash/merge');
var _merge2 = _interopRequireDefault(_merge);
var _values = require('lodash/values');
var _values2 = _interopRequireDefault(_values);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
var _ = {
concat: _concat2.default,
get: _get2.default,
map: _map2.default,
merge: _merge2.default,
values: _values2.default
};
function indexPage() {
var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var action = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
var payload = void 0;
switch (action.type) {
case _actionTypes2.default.GET_CONTENT_FOR_INDEX_PAGE:
{
payload = action.payload;
var rtn = {};
var sections = _.values(_reduxStateFieldNames2.default.sections);
var categories = _.values(_reduxStateFieldNames2.default.categories);
var fields = _.concat(sections, categories);
fields.forEach(function (field) {
rtn[field] = _.map(_.get(payload, field), function (post) {
return _.get(post, 'slug');
});
});
return _.merge({}, state, rtn, { error: null, isFetching: false });
}
case _actionTypes2.default.GET_TOPICS_FOR_INDEX_PAGE:
{
return _.merge({}, state, _defineProperty({}, _reduxStateFieldNames2.default.sections.topicsSection, _.map(_.get(action, 'payload.items'), function (item) {
return _.get(item, 'slug');
})));
}
case _actionTypes2.default.GET_PHOTOGRAPHY_POSTS_FOR_INDEX_PAGE:
{
return _.merge({}, state, _defineProperty({}, _reduxStateFieldNames2.default.sections.photosSection, _.map(_.get(action, 'payload.items'), function (item) {
return _.get(item, 'slug');
})));
}
case _actionTypes2.default.GET_INFOGRAPHIC_POSTS_FOR_INDEX_PAGE:
{
return _.merge({}, state, _defineProperty({}, _reduxStateFieldNames2.default.sections.infographicsSection, _.map(_.get(action, 'payload.items'), function (item) {
return _.get(item, 'slug');
})));
}
case _actionTypes2.default.GET_EDITOR_PICKED_POSTS:
{
return _.merge({}, state, _defineProperty({}, _reduxStateFieldNames2.default.sections.editorPicksSection, _.map(_.get(action, 'payload.items'), function (item) {
return _.get(item, 'slug');
})));
}
case _actionTypes2.default.START_TO_GET_INDEX_PAGE_CONTENT:
{
console.log('url to fetch:', action.url);
return _.merge({}, state, {
isFetching: true
});
}
case _actionTypes2.default.ERROR_TO_GET_INDEX_PAGE_CONTENT:
{
return _.merge({}, state, {
error: action.error,
isFetching: false
});
}
default:
return state;
}
}
exports.default = indexPage;