@woocommerce/data
Version:
WooCommerce Admin data store and utilities
41 lines (40 loc) • 1.36 kB
JavaScript
/**
* External dependencies
*/
import createSelector from 'rememo';
/**
* Internal dependencies
*/
import { getResourceName } from '../utils';
import { getTotalCountResourceName } from './utils';
export const getItems = createSelector((state, itemType, query, defaultValue = new Map()) => {
const resourceName = getResourceName(itemType, query);
let ids;
if (state.items[resourceName] &&
typeof state.items[resourceName] === 'object') {
ids = state.items[resourceName]
.data;
}
if (!ids) {
return defaultValue;
}
return ids.reduce((map, id) => {
var _a;
map.set(id, (_a = state.data[itemType]) === null || _a === void 0 ? void 0 : _a[id]);
return map;
}, new Map());
}, (state, itemType, query) => {
const resourceName = getResourceName(itemType, query);
return [state.items[resourceName]];
});
export const getItemsTotalCount = (state, itemType, query, defaultValue = 0) => {
const resourceName = getTotalCountResourceName(itemType, query);
const totalCount = state.items.hasOwnProperty(resourceName)
? state.items[resourceName]
: defaultValue;
return totalCount;
};
export const getItemsError = (state, itemType, query) => {
const resourceName = getResourceName(itemType, query);
return state.errors[resourceName];
};