redux-resource
Version:
Resource management for Redux.
33 lines (26 loc) • 833 B
JavaScript
// Add or update meta
export default function upsertMeta(meta, newMeta, mergeMeta) {
if (!newMeta) {
return meta;
}
var mergeMetaOption = typeof mergeMeta !== 'undefined' ? mergeMeta : true;
var shallowClone = Object.assign({}, meta);
for (var id in newMeta) {
var resource = newMeta[id];
var resourceAlreadyExists = Boolean(meta[id]);
// If there is no existing resource, we just add it to the meta object
if (!resourceAlreadyExists) {
shallowClone[id] = resource;
continue;
}
var resourceToInsert = void 0;
if (mergeMetaOption) {
var currentResource = shallowClone[id];
resourceToInsert = Object.assign({}, currentResource, resource);
} else {
resourceToInsert = resource;
}
shallowClone[id] = resourceToInsert;
}
return shallowClone;
}