woocommerce/packages/woocommerce-blocks/assets/js/data/schema/resolvers.js

39 lines
1.0 KiB
JavaScript
Raw Normal View History

2021-12-10 12:03:04 +00:00
/**
* External dependencies
*/
import { select, apiFetch } from '@wordpress/data-controls';
/**
* Internal dependencies
*/
import { receiveRoutes } from './actions';
import { STORE_KEY } from './constants';
/**
* Resolver for the getRoute selector.
*
* Note: All this essentially does is ensure the routes for the given namespace
* have been resolved.
*
* @param {string} namespace The namespace of the route being resolved.
*/
export function* getRoute( namespace ) {
// we call this simply to do any resolution of all endpoints if necessary.
// allows for jit population of routes for a given namespace.
yield select( STORE_KEY, 'getRoutes', namespace );
}
/**
* Resolver for the getRoutes selector.
*
* @param {string} namespace The namespace of the routes being resolved.
*/
export function* getRoutes( namespace ) {
const routeResponse = yield apiFetch( { path: namespace } );
const routes =
routeResponse && routeResponse.routes
? Object.keys( routeResponse.routes )
: [];
yield receiveRoutes( routes, namespace );
}