Skip to content

Commit b6c431b

Browse files
committed
Fixes/updates of collection actions and reducer
1 parent 6472228 commit b6c431b

File tree

2 files changed

+13
-11
lines changed

2 files changed

+13
-11
lines changed

src/shared/actions/collection.js

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,11 @@ function addItems(index) {
1818
/**
1919
* Increments counters of item references.
2020
* @param {String|String[]} ids
21+
* @param {Number} factor Optional.
2122
* @return {String[]}
2223
*/
23-
function bookItems(ids) {
24-
return _.isArray(ids) ? ids : [ids];
24+
function bookItems(ids, factor = 1) {
25+
return { factor, ids: _.isArray(ids) ? ids : [ids] };
2526
}
2627

2728
/**
@@ -35,10 +36,11 @@ function clean(timestamp) {
3536
/**
3637
* Decreases counters of item references.
3738
* @param {String|String[]} ids
39+
* @param {Number} factor Optional.
3840
* @return {String[]}
3941
*/
40-
function freeItems(ids) {
41-
return _.isArray(ids) ? ids : [ids];
42+
function freeItems(ids, factor = 1) {
43+
return { factor, ids: _.isArray(ids) ? ids : [ids] };
4244
}
4345

4446
/**

src/shared/reducers/collection.js

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -40,29 +40,29 @@ function onAddItems(state, action) {
4040
return result;
4141
}
4242

43-
function onBookItems(state, { payload }) {
43+
function onBookItems(state, { payload: { factor, ids } }) {
4444
const result = _.clone(state);
45-
payload.forEach((id) => {
46-
prepare(result, id).numRefs += 1;
45+
ids.forEach((id) => {
46+
prepare(result, id).numRefs += factor;
4747
});
4848
return result;
4949
}
5050

5151
function onClean(state, { payload }) {
5252
const result = _.clone(state);
5353
_.forOwn(state, (item, id) => {
54-
const slot = state(id);
54+
const slot = state[id];
5555
if (slot.numRefs || slot.loadingOperationId
5656
|| slot.timestamp > payload) return;
5757
delete result[id];
5858
});
5959
return result;
6060
}
6161

62-
function onFreeItems(state, { payload }) {
62+
function onFreeItems(state, { payload: { factor, ids } }) {
6363
const result = _.clone(state);
64-
payload.forEach((id) => {
65-
prepare(result, id).numRefs -= 1;
64+
ids.forEach((id) => {
65+
prepare(result, id).numRefs -= factor;
6666
});
6767
return result;
6868
}

0 commit comments

Comments
 (0)