twreporter-react-index-page
Version:
twreporter index page version 2
107 lines (81 loc) • 3.68 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _actionTypes = require('../constants/action-types');
var _actionTypes2 = _interopRequireDefault(_actionTypes);
var _reduxStateFields = require('../constants/redux-state-fields');
var _reduxStateFields2 = _interopRequireDefault(_reduxStateFields);
var _get = require('lodash/get');
var _get2 = _interopRequireDefault(_get);
var _merge = require('lodash/merge');
var _merge2 = _interopRequireDefault(_merge);
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 _ = {
get: _get2.default,
merge: _merge2.default
};
function indexPage() {
var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var action = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
switch (action.type) {
case _actionTypes2.default.GET_CONTENT_FOR_INDEX_PAGE:
{
var _$merge;
// only store the post slugs,
// the full content will be handled by entities reducer
var latest = _.get(action, 'payload.' + _reduxStateFields2.default.latest, []).map(function (post) {
return _.get(post, 'slug');
});
// only store the post slugs
var editorPicks = _.get(action, 'payload.' + _reduxStateFields2.default.editorPicks, []).map(function (post) {
return _.get(post, 'slug');
});
// only store the topic slug
var latestTopic = _.get(action, 'payload.' + _reduxStateFields2.default.latestTopic + '.slug', '');
// only store the post slugs
var reviews = _.get(action, 'payload.' + _reduxStateFields2.default.reviews, []).map(function (post) {
return _.get(post, 'slug');
});
return _.merge({}, state, (_$merge = {
latest: latest
}, _defineProperty(_$merge, _reduxStateFields2.default.editorPicks, editorPicks), _defineProperty(_$merge, _reduxStateFields2.default.latestTopic, latestTopic), _defineProperty(_$merge, 'reviews', reviews), _$merge));
}
case _actionTypes2.default.GET_TOPICS_FOR_INDEX_PAGE:
{
return _.merge({}, state, _defineProperty({}, _reduxStateFields2.default.topics, action.payload.map(function (item) {
return _.get(item, 'slug');
})));
}
case _actionTypes2.default.GET_PHOTOGRAPHY_POSTS_FOR_INDEX_PAGE:
{
return _.merge({}, state, _defineProperty({}, _reduxStateFields2.default.photographies, action.payload.map(function (item) {
return _.get(item, 'slug');
})));
}
case _actionTypes2.default.GET_INFOGRAPHIC_POSTS_FOR_INDEX_PAGE:
{
return _.merge({}, state, _defineProperty({}, _reduxStateFields2.default.infographics, action.payload.map(function (item) {
return _.get(item, 'slug');
})));
}
case _actionTypes2.default.START_TO_GET_POSTS:
case _actionTypes2.default.START_TO_GET_TOPICS:
case _actionTypes2.default.START_TO_GET_INDEX_PAGE_CONTENT:
{
console.log(action.type);
return state;
}
case _actionTypes2.default.ERROR_TO_GET_POSTS:
case _actionTypes2.default.ERROR_TO_GET_TOPICS:
case _actionTypes2.default.ERROR_TO_GET_INDEX_PAGE_CONTENT:
{
console.warn(action.type + ' : ' + action.errorMsg.toString());
return state;
}
default:
return state;
}
}
exports.default = indexPage;