@twreporter/redux
Version:
redux actions and reducers for twreporter website
104 lines (103 loc) • 4.66 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.topic = topic;
exports.topics = topics;
var _actionTypes = _interopRequireDefault(require("../constants/action-types"));
var _pagination = _interopRequireDefault(require("../utils/pagination"));
var _concat = _interopRequireDefault(require("lodash/concat"));
var _get = _interopRequireDefault(require("lodash/get"));
var _map = _interopRequireDefault(require("lodash/map"));
var _merge = _interopRequireDefault(require("lodash/merge"));
var _set = _interopRequireDefault(require("lodash/set"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); } // lodash
var _ = {
concat: _concat["default"],
get: _get["default"],
map: _map["default"],
merge: _merge["default"],
set: _set["default"]
};
var offsetToPage = _pagination["default"].offsetToPage;
function topic() {
var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var action = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
switch (action.type) {
case _actionTypes["default"].selectedTopic.read.success:
case _actionTypes["default"].selectedTopic.read.alreadyExists:
{
return _.merge({}, state, {
slug: _.get(action, 'payload.topic.slug'),
error: null,
isFetching: false
});
}
case _actionTypes["default"].selectedTopic.read.request:
return _.merge({}, state, {
slug: _.get(action, 'payload.slug'),
error: null,
isFetching: true
});
case _actionTypes["default"].selectedTopic.read.failure:
return _.merge({}, state, {
slug: _.get(action, 'payload.slug'),
error: _.get(action, 'payload.error'),
isFetching: false
});
default:
return state;
}
}
function topics() {
var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var action = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
switch (action.type) {
case _actionTypes["default"].topics.read.success:
{
var payload = action.payload;
var total = _.get(payload, 'total');
var offset = _.get(payload, 'offset');
var limit = _.get(payload, 'limit');
var _offsetToPage = offsetToPage({
limit: limit,
offset: offset,
total: total
}),
page = _offsetToPage.page,
nPerPage = _offsetToPage.nPerPage,
totalPages = _offsetToPage.totalPages;
var pageItems = _.map(_.get(payload, 'items'), function (item) {
return item.id;
});
/* If nPerPage changed, overwrite the items in state, otherwise merge items with which in state */
var items = nPerPage !== state.nPerPage ? _defineProperty({}, page, pageItems) : _.merge({}, state.items, _defineProperty({}, page, pageItems));
return _.merge({}, state, {
items: items,
totalPages: totalPages,
page: page,
nPerPage: nPerPage,
error: null,
isFetching: false
});
}
case _actionTypes["default"].topics.read.request:
return _.merge({}, state, {
// page: action.page,
// nPerPage: action.nPerPage,
error: null,
isFetching: true
});
case _actionTypes["default"].topics.read.failure:
return _.merge({}, state, {
error: _.get(action, 'payload.error'),
isFetching: false
});
default:
return state;
}
}