Merge pull request woocommerce/woocommerce-admin#1954 from woocommerce/fix/page-page-not-working
getItems: modify parse flag by isUnboundedRequest
This commit is contained in:
commit
17ef1fc9c6
|
@ -36,16 +36,36 @@ function read( resourceNames, fetch = apiFetch ) {
|
|||
const endpoint = typeEndpointMap[ prefix ];
|
||||
const query = getResourceIdentifier( resourceName );
|
||||
const url = NAMESPACE + `/${ endpoint }${ stringifyQuery( query ) }`;
|
||||
const isUnboundedRequest = -1 === query.per_page;
|
||||
|
||||
try {
|
||||
const response = await fetch( {
|
||||
parse: false,
|
||||
/* eslint-disable max-len */
|
||||
/**
|
||||
* A false parse flag allows a full response including headers which are useful
|
||||
* to determine totalCount. However, this invalidates an unbounded request, ie
|
||||
* `per_page: -1` by skipping middleware in apiFetch.
|
||||
*
|
||||
* See the Gutenberg code for more:
|
||||
* https://github.com/WordPress/gutenberg/blob/dee3dcf49028717b4af3164e3096bfe747c41ed2/packages/api-fetch/src/middlewares/fetch-all-middleware.js#L39-L45
|
||||
*/
|
||||
/* eslint-enable max-len */
|
||||
parse: isUnboundedRequest,
|
||||
path: url,
|
||||
} );
|
||||
|
||||
const items = await response.json();
|
||||
let items;
|
||||
let totalCount;
|
||||
|
||||
if ( isUnboundedRequest ) {
|
||||
items = response;
|
||||
totalCount = items.length;
|
||||
} else {
|
||||
items = await response.json();
|
||||
totalCount = parseInt( response.headers.get( 'x-wp-total' ) );
|
||||
}
|
||||
|
||||
const ids = items.map( item => item.id );
|
||||
const totalCount = parseInt( response.headers.get( 'x-wp-total' ) );
|
||||
const itemResources = items.reduce( ( resources, item ) => {
|
||||
resources[ getResourceName( `${ prefix }-item`, item.id ) ] = { data: item };
|
||||
return resources;
|
||||
|
|
Loading…
Reference in New Issue