@coorpacademy/progression-engine
Version:
45 lines (44 loc) • 1.98 kB
JavaScript
;
exports.__esModule = true;
exports.default = viewedResources;
var _includes2 = _interopRequireDefault(require("lodash/fp/includes"));
var _get2 = _interopRequireDefault(require("lodash/fp/get"));
var _findIndex2 = _interopRequireDefault(require("lodash/fp/findIndex"));
var _concat2 = _interopRequireDefault(require("lodash/fp/concat"));
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
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] = {
...newViewedResources[contentIndex],
resources: (0, _concat2.default)(newViewedResources[contentIndex].resources, [resourceRef])
};
return newViewedResources;
}
default:
return currentViewedResources;
}
};
}
//# sourceMappingURL=viewed-resources.js.map