/**
 * External dependencies
 */
import apiFetch from '@wordpress/api-fetch';
import { controls as dataControls } from '@wordpress/data-controls';
import { addQueryArgs } from '@wordpress/url';

/**
 * Internal dependencies
 */
import { API_ROUTE } from './constants';

export const fetch = ( endpoint, data = {} ) => {
	return {
		type: 'FETCH',
		endpoint,
		data,
	};
};

export const controls = {
	...dataControls,
	FETCH( { data = {}, method = 'GET' } ) {
		return new Promise( ( resolve ) => {
			const url = addQueryArgs( `${ API_ROUTE }`, data );

			apiFetch( { path: url, method } ).then( ( result ) =>
				resolve( result )
			);
		} );
	},
};