UNPKG

@twreporter/redux

Version:

redux actions and reducers for twreporter website

74 lines (73 loc) 3.9 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.articlesByAuthor = void 0; var _actionTypes = _interopRequireDefault(require("../constants/action-types")); var _authorPage = require("../constants/author-page"); var _get = _interopRequireDefault(require("lodash/get")); var _uniq = _interopRequireDefault(require("lodash/uniq")); var _assign = _interopRequireDefault(require("lodash/assign")); 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); } var _ = { assign: _assign["default"], get: _get["default"], uniq: _uniq["default"] }; var initialSubState = { isFetching: false, error: null, collectIndexList: [], currentPage: -1, // Initial currentPage equals -1 which means no data has been fetched. totalResults: 0, hasMore: false, lastUpdated: 0 }; var articlesByAuthor = exports.articlesByAuthor = function articlesByAuthor() { var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; var action = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; var authorId = _.get(action, 'payload.authorId', ''); var previousSubState = _.get(state, authorId, null); var nextSubState = {}; switch (action.type) { case _actionTypes["default"].FETCH_AUTHOR_COLLECTION_REQUEST: nextSubState = _.assign({}, initialSubState, previousSubState, { isFetching: true }); return _.assign({}, state, _defineProperty({}, authorId, nextSubState)); case _actionTypes["default"].FETCH_AUTHOR_COLLECTION_SUCCESS: { var previousCollectionIdList = _.get(state, [authorId, 'collectIndexList'], []); var _action$payload = action.payload, currentPage = _action$payload.currentPage, totalPages = _action$payload.totalPages, totalResults = _action$payload.totalResults, receivedAt = _action$payload.receivedAt; nextSubState = _.assign({}, initialSubState, { isFetching: false, collectIndexList: _.uniq(previousCollectionIdList.concat(_.get(action, 'payload.normalizedData.result', []))), currentPage: currentPage, totalResults: totalResults, hasMore: currentPage - _authorPage.NUMBER_OF_FIRST_RESPONSE_PAGE + 1 < totalPages, lastUpdated: receivedAt }); return _.assign({}, state, _defineProperty({}, authorId, nextSubState)); } case _actionTypes["default"].FETCH_AUTHOR_COLLECTION_FAILURE: { nextSubState = _.assign({}, initialSubState, { isFetching: false, error: action.payload.error, lastUpdated: action.payload.failedAt }); return _.assign({}, state, _defineProperty({}, authorId, nextSubState)); } default: return state; } };