40 lines
1.1 KiB
JavaScript
40 lines
1.1 KiB
JavaScript
/**
|
|
* External dependencies
|
|
*/
|
|
import { apiFetch } from '@wordpress/data-controls';
|
|
import { controls } from '@wordpress/data';
|
|
|
|
/**
|
|
* 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 controls.resolveSelect( 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 );
|
|
}
|