@coorpacademy/progression-engine
Version:
63 lines (46 loc) • 2.34 kB
JavaScript
;
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