1 | import symbols from './symbols';
|
2 | import { defaultMetaItems, defaultMetaItem } from './defaultMeta';
|
3 | import { asArray } from './helpers';
|
4 |
|
5 | export const getMeta = data => data[symbols.metadataKey];
|
6 |
|
7 | export const meta = (data) => {
|
8 | console.warn('ReduxCRUDManager meta() is deprecated. Use getMeta() instead');
|
9 | return getMeta(data);
|
10 | };
|
11 |
|
12 | export const setMeta = (_data, metaIncoming) => {
|
13 | const data = _data;
|
14 | const oldMeta = data[symbols.metadataKey] || {};
|
15 | const newMeta = { ...oldMeta, ...metaIncoming };
|
16 | data[symbols.metadataKey] = newMeta;
|
17 | return data;
|
18 | };
|
19 |
|
20 | export const setCustomMeta = (data, metaIncoming) => {
|
21 | const defaultMeta = Array.isArray(data) ? defaultMetaItems : defaultMetaItem;
|
22 | const nextMeta = {};
|
23 | Object.entries(metaIncoming).forEach(([key, value]) => {
|
24 | if (defaultMeta[key] !== undefined) {
|
25 | console.error(`ReduxCRUDManager: meta '${key}' is a reserved property. Use another key`);
|
26 | } else {
|
27 | nextMeta[key] = value;
|
28 | }
|
29 | });
|
30 | return setMeta(data, nextMeta);
|
31 | };
|
32 |
|
33 | export const setMetadataForItems = (items, _meta) =>
|
34 | asArray(items).map(item => ({
|
35 | ...item,
|
36 | ...setMeta(item, _meta),
|
37 | }));
|