Move api requests to controls

This commit is contained in:
inpsyde-maticluznar 2024-12-20 13:43:41 +01:00
parent f0a09ba83b
commit da0a81036a
No known key found for this signature in database
GPG key ID: D005973F231309F6
5 changed files with 44 additions and 28 deletions

View file

@ -25,4 +25,7 @@ export default {
DO_REFRESH_MERCHANT: 'COMMON:DO_REFRESH_MERCHANT',
DO_REFRESH_FEATURES: 'DO_REFRESH_FEATURES',
DO_RESUBSCRIBE_WEBHOOKS: 'COMMON:DO_RESUBSCRIBE_WEBHOOKS',
DO_START_WEBHOOK_SIMULATION: 'COMMON:DO_START_WEBHOOK_SIMULATION',
DO_CHECK_WEBHOOK_SIMULATION_STATE:
'COMMON:DO_CHECK_WEBHOOK_SIMULATION_STATE',
};

View file

@ -241,3 +241,21 @@ export const resubscribeWebhooks = function* () {
return result;
};
/**
* Side effect. Starts webhook simulation.
*
* @return {Action} The action.
*/
export const startWebhookSimulation = function* () {
return yield { type: ACTION_TYPES.DO_START_WEBHOOK_SIMULATION };
};
/**
* Side effect. Checks webhook simulation.
*
* @return {Action} The action.
*/
export const checkWebhookSimulationState = function* () {
return yield { type: ACTION_TYPES.DO_CHECK_WEBHOOK_SIMULATION_STATE };
};

View file

@ -16,6 +16,7 @@ import {
REST_PERSIST_PATH,
REST_REFRESH_FEATURES_PATH,
REST_WEBHOOKS,
REST_WEBHOOKS_SIMULATE,
} from './constants';
import ACTION_TYPES from './action-types';
@ -123,4 +124,17 @@ export const controls = {
path: REST_WEBHOOKS,
} );
},
async [ ACTION_TYPES.DO_START_WEBHOOK_SIMULATION ]() {
return await apiFetch( {
method: 'POST',
path: REST_WEBHOOKS_SIMULATE,
} );
},
async [ ACTION_TYPES.DO_CHECK_WEBHOOK_SIMULATION_STATE ]() {
return await apiFetch( {
path: REST_WEBHOOKS_SIMULATE,
} );
},
};

View file

@ -9,8 +9,7 @@
import { useDispatch, useSelect } from '@wordpress/data';
import { useCallback } from '@wordpress/element';
import { REST_WEBHOOKS, STORE_NAME } from './constants';
import apiFetch from '@wordpress/api-fetch';
import { STORE_NAME } from './constants';
const useTransient = ( key ) =>
useSelect(
@ -31,10 +30,11 @@ const useHooks = () => {
setManualConnectionMode,
setClientId,
setClientSecret,
setWebhooks,
connectToSandbox,
connectToProduction,
connectViaIdAndSecret,
startWebhookSimulation,
checkWebhookSimulationState,
} = useDispatch( STORE_NAME );
// Transient accessors.
@ -78,19 +78,14 @@ const useHooks = () => {
setClientSecret: ( value ) => {
return savePersistent( setClientSecret, value );
},
setWebhooks: async () => {
const response = await apiFetch( {
method: 'GET',
path: REST_WEBHOOKS,
} );
setWebhooks( response?.data?.webhooks );
},
connectToSandbox,
connectToProduction,
connectViaIdAndSecret,
merchant,
wooSettings,
webhooks,
startWebhookSimulation,
checkWebhookSimulationState,
};
};