Files
habitica/website/common/script/libs/refPush.js
Matteo Pagliazzi 0c27fb24a5 start fixing commong
2019-10-09 16:51:17 +02:00

25 lines
703 B
JavaScript

import isEmpty from 'lodash/isEmpty';
import maxBy from 'lodash/maxBy';
import values from 'lodash/values';
import uuid from './uuid';
/*
Reflists are arrays, but stored as objects.
Mongoose has a helluvatime working with arrays (the main problem for our
syncing issues) - so the goal is to move away from arrays to objects,
since mongoose can reference elements by ID
no problem. To maintain sorting, we use these helper functions:
*/
export default function refPush (reflist, item) {
item.sort = isEmpty(reflist) ? 0 : maxBy(values(reflist), 'sort').sort + 1;
if (!(item.id && !reflist[item.id])) {
item.id = uuid();
}
reflist[item.id] = item;
return reflist[item.id];
}