@woocommerce/data
Version:
WooCommerce Admin data store and utilities
54 lines (53 loc) • 1.66 kB
JavaScript
/**
* External dependencies
*/
import createSelector from 'rememo';
/**
* Internal dependencies
*/
import { getOrderResourceName, getTotalOrderCountResourceName } from './utils';
export const getOrders = createSelector((state, query, defaultValue = undefined) => {
const resourceName = getOrderResourceName(query);
const ids = state.orders[resourceName]
? state.orders[resourceName].data
: undefined;
if (!ids) {
return defaultValue;
}
if (query && typeof query._fields !== 'undefined') {
const fields = query._fields;
return ids.map((id) => {
return fields.reduce((product, field) => {
return {
...product,
[field]: state.data[id][field],
};
}, {});
});
}
return ids.map((id) => {
return state.data[id];
});
}, (state, query) => {
const resourceName = getOrderResourceName(query);
const ids = state.orders[resourceName]
? state.orders[resourceName].data
: [];
return [
state.orders[resourceName],
...ids.map((id) => {
return state.data[id];
}),
];
});
export const getOrdersTotalCount = (state, query, defaultValue = undefined) => {
const resourceName = getTotalOrderCountResourceName(query);
const totalCount = state.ordersCount.hasOwnProperty(resourceName)
? state.ordersCount[resourceName]
: defaultValue;
return totalCount;
};
export const getOrdersError = (state, query) => {
const resourceName = getOrderResourceName(query);
return state.errors[resourceName];
};