UNPKG

1.98 kBJavaScriptView Raw
1import _includes from "lodash/fp/includes";
2import _get from "lodash/fp/get";
3import _findIndex from "lodash/fp/findIndex";
4import _concat from "lodash/fp/concat";
5
6function _extends() { _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; }; return _extends.apply(this, arguments); }
7
8export default function viewedResources(config) {
9 return (currentViewedResources = [], action) => {
10 switch (action.type) {
11 case 'resource':
12 {
13 const resourceViewAction = action;
14 const contentRef = resourceViewAction.payload.content.ref;
15 const contentType = resourceViewAction.payload.content.type;
16 const resourceRef = resourceViewAction.payload.resource.ref;
17
18 const contentIndex = _findIndex({
19 ref: contentRef
20 }, currentViewedResources);
21
22 if (contentIndex === -1) {
23 return _concat(currentViewedResources)([{
24 ref: contentRef,
25 type: contentType,
26 resources: [resourceRef]
27 }]);
28 }
29
30 const contentResources = _get('resources', currentViewedResources[contentIndex]);
31
32 const resourceAlreadyViewed = _includes(resourceRef, contentResources);
33
34 if (resourceAlreadyViewed) return currentViewedResources; // return currentViewedResources, contentIndex, resourceRef;
35
36 const newViewedResources = [...currentViewedResources];
37 newViewedResources[contentIndex] = _extends(_extends({}, newViewedResources[contentIndex]), {}, {
38 resources: _concat(newViewedResources[contentIndex].resources, [resourceRef])
39 });
40 return newViewedResources;
41 }
42
43 default:
44 return currentViewedResources;
45 }
46 };
47}
48//# sourceMappingURL=viewed-resources.js.map
\No newline at end of file