UNPKG

@twreporter/redux

Version:

redux actions and reducers for twreporter website

104 lines (103 loc) 4.66 kB
"use strict"; 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; } }