2024-11-18 18:58:54 +01:00
|
|
|
/**
|
|
|
|
* Controls: Implement side effects, typically asynchronous operations.
|
|
|
|
*
|
2024-11-20 17:21:09 +01:00
|
|
|
* Controls use ACTION_TYPES keys as identifiers.
|
2024-11-18 18:58:54 +01:00
|
|
|
* They are triggered by corresponding actions and handle external interactions.
|
|
|
|
*
|
|
|
|
* @file
|
|
|
|
*/
|
|
|
|
|
2024-11-20 17:21:09 +01:00
|
|
|
import apiFetch from '@wordpress/api-fetch';
|
2024-11-18 18:58:54 +01:00
|
|
|
|
2024-11-21 19:07:32 +01:00
|
|
|
import {
|
|
|
|
REST_PERSIST_PATH,
|
2025-01-02 14:35:24 +01:00
|
|
|
REST_DIRECT_AUTHENTICATION_PATH,
|
2024-12-03 16:28:28 +01:00
|
|
|
REST_CONNECTION_URL_PATH,
|
2024-12-06 19:10:33 +01:00
|
|
|
REST_HYDRATE_MERCHANT_PATH,
|
2024-12-16 13:12:38 +01:00
|
|
|
REST_REFRESH_FEATURES_PATH,
|
2025-01-13 14:11:24 +01:00
|
|
|
REST_OAUTH_AUTHENTICATION_PATH,
|
2025-01-13 14:16:46 +01:00
|
|
|
REST_DISCONNECT_MERCHANT_PATH,
|
2024-12-19 13:10:19 +01:00
|
|
|
REST_WEBHOOKS,
|
2024-12-20 13:43:41 +01:00
|
|
|
REST_WEBHOOKS_SIMULATE,
|
2024-11-21 19:07:32 +01:00
|
|
|
} from './constants';
|
2024-11-18 18:58:54 +01:00
|
|
|
import ACTION_TYPES from './action-types';
|
|
|
|
|
2024-11-20 17:21:09 +01:00
|
|
|
export const controls = {
|
|
|
|
async [ ACTION_TYPES.DO_PERSIST_DATA ]( { data } ) {
|
2024-11-18 18:58:54 +01:00
|
|
|
try {
|
2024-12-17 15:05:34 +01:00
|
|
|
await apiFetch( {
|
2024-11-20 17:21:09 +01:00
|
|
|
path: REST_PERSIST_PATH,
|
|
|
|
method: 'POST',
|
2024-11-18 18:58:54 +01:00
|
|
|
data,
|
|
|
|
} );
|
|
|
|
} catch ( error ) {
|
2024-11-20 17:21:09 +01:00
|
|
|
console.error( 'Error saving data.', error );
|
2024-11-18 18:58:54 +01:00
|
|
|
}
|
|
|
|
},
|
2024-11-21 16:16:20 +01:00
|
|
|
|
2024-12-19 13:23:40 +01:00
|
|
|
async [ ACTION_TYPES.DO_GENERATE_ONBOARDING_URL ]( {
|
|
|
|
products,
|
2025-01-03 13:48:26 +01:00
|
|
|
useSandbox,
|
2024-12-19 13:23:40 +01:00
|
|
|
} ) {
|
2024-12-03 16:28:28 +01:00
|
|
|
try {
|
2024-12-17 15:05:34 +01:00
|
|
|
return apiFetch( {
|
2024-12-03 16:28:28 +01:00
|
|
|
path: REST_CONNECTION_URL_PATH,
|
|
|
|
method: 'POST',
|
2025-01-03 13:48:26 +01:00
|
|
|
data: { useSandbox, products },
|
2024-11-21 19:07:32 +01:00
|
|
|
} );
|
|
|
|
} catch ( e ) {
|
2024-12-17 15:05:34 +01:00
|
|
|
return {
|
2024-11-21 19:07:32 +01:00
|
|
|
success: false,
|
|
|
|
error: e,
|
|
|
|
};
|
|
|
|
}
|
|
|
|
},
|
|
|
|
|
2025-01-08 14:59:59 +01:00
|
|
|
async [ ACTION_TYPES.DO_DIRECT_API_AUTHENTICATION ]( {
|
2024-11-21 16:16:20 +01:00
|
|
|
clientId,
|
|
|
|
clientSecret,
|
|
|
|
useSandbox,
|
|
|
|
} ) {
|
|
|
|
try {
|
2024-12-17 15:05:34 +01:00
|
|
|
return await apiFetch( {
|
2025-01-02 14:35:24 +01:00
|
|
|
path: REST_DIRECT_AUTHENTICATION_PATH,
|
2024-11-21 16:16:20 +01:00
|
|
|
method: 'POST',
|
|
|
|
data: {
|
|
|
|
clientId,
|
|
|
|
clientSecret,
|
|
|
|
useSandbox,
|
|
|
|
},
|
|
|
|
} );
|
|
|
|
} catch ( e ) {
|
2024-12-17 15:05:34 +01:00
|
|
|
return {
|
2024-11-21 16:16:20 +01:00
|
|
|
success: false,
|
|
|
|
error: e,
|
|
|
|
};
|
|
|
|
}
|
|
|
|
},
|
2024-12-06 19:10:33 +01:00
|
|
|
|
2025-01-08 14:59:59 +01:00
|
|
|
async [ ACTION_TYPES.DO_OAUTH_AUTHENTICATION ]( {
|
2025-01-02 18:22:09 +01:00
|
|
|
sharedId,
|
|
|
|
authCode,
|
|
|
|
useSandbox,
|
|
|
|
} ) {
|
|
|
|
try {
|
|
|
|
return await apiFetch( {
|
2025-01-13 14:11:24 +01:00
|
|
|
path: REST_OAUTH_AUTHENTICATION_PATH,
|
2025-01-02 18:22:09 +01:00
|
|
|
method: 'POST',
|
|
|
|
data: {
|
|
|
|
sharedId,
|
|
|
|
authCode,
|
|
|
|
useSandbox,
|
|
|
|
},
|
|
|
|
} );
|
|
|
|
} catch ( e ) {
|
|
|
|
return {
|
|
|
|
success: false,
|
|
|
|
error: e,
|
|
|
|
};
|
|
|
|
}
|
|
|
|
},
|
|
|
|
|
2025-01-13 14:16:46 +01:00
|
|
|
async [ ACTION_TYPES.DO_DISCONNECT ]() {
|
|
|
|
return await apiFetch( {
|
|
|
|
path: REST_DISCONNECT_MERCHANT_PATH,
|
|
|
|
method: 'POST',
|
|
|
|
} );
|
|
|
|
},
|
|
|
|
|
2024-12-06 19:10:33 +01:00
|
|
|
async [ ACTION_TYPES.DO_REFRESH_MERCHANT ]() {
|
|
|
|
try {
|
2024-12-17 15:05:34 +01:00
|
|
|
return await apiFetch( { path: REST_HYDRATE_MERCHANT_PATH } );
|
2024-12-06 19:10:33 +01:00
|
|
|
} catch ( e ) {
|
2024-12-17 15:05:34 +01:00
|
|
|
return {
|
2024-12-06 19:10:33 +01:00
|
|
|
success: false,
|
|
|
|
error: e,
|
|
|
|
};
|
|
|
|
}
|
|
|
|
},
|
2024-12-16 13:12:38 +01:00
|
|
|
|
|
|
|
async [ ACTION_TYPES.DO_REFRESH_FEATURES ]() {
|
|
|
|
try {
|
2024-12-17 15:05:34 +01:00
|
|
|
return await apiFetch( {
|
2024-12-16 13:12:38 +01:00
|
|
|
path: REST_REFRESH_FEATURES_PATH,
|
|
|
|
method: 'POST',
|
|
|
|
} );
|
|
|
|
} catch ( e ) {
|
2024-12-17 15:05:34 +01:00
|
|
|
return {
|
2024-12-16 13:12:38 +01:00
|
|
|
success: false,
|
|
|
|
error: e,
|
|
|
|
message: e.message,
|
|
|
|
};
|
|
|
|
}
|
|
|
|
},
|
2024-12-19 13:10:19 +01:00
|
|
|
|
|
|
|
async [ ACTION_TYPES.DO_RESUBSCRIBE_WEBHOOKS ]() {
|
|
|
|
return await apiFetch( {
|
|
|
|
method: 'POST',
|
|
|
|
path: REST_WEBHOOKS,
|
|
|
|
} );
|
|
|
|
},
|
2024-12-20 13:43:41 +01:00
|
|
|
|
|
|
|
async [ ACTION_TYPES.DO_START_WEBHOOK_SIMULATION ]() {
|
|
|
|
return await apiFetch( {
|
|
|
|
method: 'POST',
|
|
|
|
path: REST_WEBHOOKS_SIMULATE,
|
|
|
|
} );
|
|
|
|
},
|
|
|
|
|
2025-01-13 14:12:57 +01:00
|
|
|
async [ ACTION_TYPES.DO_CHECK_WEBHOOK_SIMULATION ]() {
|
2024-12-20 13:43:41 +01:00
|
|
|
return await apiFetch( {
|
|
|
|
path: REST_WEBHOOKS_SIMULATE,
|
|
|
|
} );
|
|
|
|
},
|
2024-11-18 18:58:54 +01:00
|
|
|
};
|