woocommerce/plugins/woocommerce-blocks/assets/js/middleware/remove-user-locale.ts

39 lines
1.3 KiB
TypeScript

/**
* External dependencies
*/
import apiFetch from '@wordpress/api-fetch';
import { addQueryArgs } from '@wordpress/url';
/**
* Internal dependencies
*/
import { isStoreApiRequest } from './store-api-nonce';
/**
* Middleware to add the '_locale=site' query parameter from API requests.
*
* TODO: Remove once https://github.com/WordPress/gutenberg/issues/16805 is fixed and replace by removing userLocaleMiddleware middleware.
*
* @param {Object} options Fetch options.
* @param {Object} options.url The URL of the request.
* @param {Object} options.path The path of the request.
* @param {Function} next The next middleware or fetchHandler to call.
* @return {*} The evaluated result of the remaining middleware chain.
*/
const removeUserLocaleMiddleware = (
options: { url?: string; path?: string },
next: ( options: { url?: string; path?: string } ) => Promise< unknown >
): Promise< unknown > => {
if ( typeof options.url === 'string' && isStoreApiRequest( options ) ) {
options.url = addQueryArgs( options.url, { _locale: 'site' } );
}
if ( typeof options.path === 'string' && isStoreApiRequest( options ) ) {
options.path = addQueryArgs( options.path, { _locale: 'site' } );
}
return next( options );
};
apiFetch.use( removeUserLocaleMiddleware );