UNPKG

@coorpacademy/progression-engine

Version:

63 lines (46 loc) 2.34 kB
'use strict'; exports.__esModule = true; var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; exports.default = viewedResources; var _concat = require('lodash/fp/concat'); var _concat2 = _interopRequireDefault(_concat); var _findIndex = require('lodash/fp/findIndex'); var _findIndex2 = _interopRequireDefault(_findIndex); var _get = require('lodash/fp/get'); var _get2 = _interopRequireDefault(_get); var _includes = require('lodash/fp/includes'); var _includes2 = _interopRequireDefault(_includes); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function viewedResources(config) { return (currentViewedResources = [], action) => { switch (action.type) { case 'resource': { const resourceViewAction = action; const contentRef = resourceViewAction.payload.content.ref; const contentType = resourceViewAction.payload.content.type; const resourceRef = resourceViewAction.payload.resource.ref; const contentIndex = (0, _findIndex2.default)({ ref: contentRef }, currentViewedResources); if (contentIndex === -1) { return (0, _concat2.default)(currentViewedResources)([{ ref: contentRef, type: contentType, resources: [resourceRef] }]); } const contentResources = (0, _get2.default)('resources', currentViewedResources[contentIndex]); const resourceAlreadyViewed = (0, _includes2.default)(resourceRef, contentResources); if (resourceAlreadyViewed) return currentViewedResources; // return currentViewedResources, contentIndex, resourceRef; const newViewedResources = [...currentViewedResources]; newViewedResources[contentIndex] = _extends({}, newViewedResources[contentIndex], { resources: (0, _concat2.default)(newViewedResources[contentIndex].resources, [resourceRef]) }); return newViewedResources; } default: return currentViewedResources; } }; } //# sourceMappingURL=viewed-resources.js.map