UNPKG

@twreporter/redux

Version:

redux actions and reducers for twreporter website

78 lines (74 loc) 2.25 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = featureTopic; var _actionTypes = _interopRequireDefault(require("../constants/action-types")); var _get = _interopRequireDefault(require("lodash/get")); var _map = _interopRequireDefault(require("lodash/map")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } // lodash var _ = { get: _get["default"], map: _map["default"] }; /** @type {import('../typedef').FeatureTopic} */ var initialState = { isFetching: false, error: null, id: '', lastThreeRelatedPostIds: [] }; /** * @param {import('../typedef').FeatureTopic} state * @param {Object} [action={}] * @param {string} [action.type] * @param {Object} [action.payload] * @param {Object} action.payload.topic * @param {Object[]} action.payload.lastThreeRelatedPosts * @param {Object} action.payload.error */ function featureTopic() { var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : initialState; var action = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; switch (_.get(action, 'type', '')) { case _actionTypes["default"].featureTopic.read.request: { return { isFetching: true, error: null, id: '', lastThreeRelatedPostIds: [] }; } case _actionTypes["default"].featureTopic.read.failure: { var error = _.get(action, 'payload.error', null); return { isFetching: false, error: error, id: '', lastThreeRelatedPostIds: [] }; } case _actionTypes["default"].featureTopic.read.success: { var topicId = _.get(action, 'payload.topic.id', ''); if (!topicId) { return state; } var relatedPosts = _.get(action, 'payload.lastThreeRelatedPosts', []); var relatedPostIds = _.map(relatedPosts, function (post) { return _.get(post, 'id', ''); }); return { isFetching: false, error: null, id: topicId, lastThreeRelatedPostIds: relatedPostIds }; } default: return state; } }