@coorpacademy/progression-engine
Version:
40 lines • 1.65 kB
JavaScript
import _includes from "lodash/fp/includes";
import _get from "lodash/fp/get";
import _findIndex from "lodash/fp/findIndex";
import _concat from "lodash/fp/concat";
export default 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 = _findIndex({
ref: contentRef
}, currentViewedResources);
if (contentIndex === -1) {
return _concat(currentViewedResources)([{
ref: contentRef,
type: contentType,
resources: [resourceRef]
}]);
}
const contentResources = _get('resources', currentViewedResources[contentIndex]);
const resourceAlreadyViewed = _includes(resourceRef, contentResources);
if (resourceAlreadyViewed) return currentViewedResources;
// return currentViewedResources, contentIndex, resourceRef;
const newViewedResources = [...currentViewedResources];
newViewedResources[contentIndex] = {
...newViewedResources[contentIndex],
resources: _concat(newViewedResources[contentIndex].resources, [resourceRef])
};
return newViewedResources;
}
default:
return currentViewedResources;
}
};
}
//# sourceMappingURL=viewed-resources.js.map