55 lines
1.3 KiB
JavaScript
55 lines
1.3 KiB
JavaScript
|
/**
|
||
|
* @typedef {import('@woocommerce/type-defs/hooks').EmitResponseTypes} EmitResponseTypes
|
||
|
* @typedef {import('@woocommerce/type-defs/hooks').NoticeContexts} NoticeContexts
|
||
|
* @typedef {import('@woocommerce/type-defs/hooks').EmitResponseApi} EmitResponseApi
|
||
|
*/
|
||
|
|
||
|
const isResponseOf = ( response, type ) => {
|
||
|
return !! response.type && response.type === type;
|
||
|
};
|
||
|
|
||
|
/**
|
||
|
* @type {EmitResponseTypes}
|
||
|
*/
|
||
|
const responseTypes = {
|
||
|
SUCCESS: 'success',
|
||
|
FAIL: 'failure',
|
||
|
ERROR: 'error',
|
||
|
};
|
||
|
|
||
|
/**
|
||
|
* @type {NoticeContexts}
|
||
|
*/
|
||
|
const noticeContexts = {
|
||
|
PAYMENTS: 'wc/payment-area',
|
||
|
EXPRESS_PAYMENTS: 'wc/express-payment-area',
|
||
|
};
|
||
|
|
||
|
const isSuccessResponse = ( response ) => {
|
||
|
return isResponseOf( response, responseTypes.SUCCESS );
|
||
|
};
|
||
|
|
||
|
const isErrorResponse = ( response ) => {
|
||
|
return isResponseOf( response, responseTypes.ERROR );
|
||
|
};
|
||
|
|
||
|
const isFailResponse = ( response ) => {
|
||
|
return isResponseOf( response, responseTypes.FAIL );
|
||
|
};
|
||
|
|
||
|
/**
|
||
|
* A custom hook exposing response utilities for emitters.
|
||
|
*
|
||
|
* @return {EmitResponseApi} Various interfaces for validating and implementing
|
||
|
* emitter response properties.
|
||
|
*/
|
||
|
export const useEmitResponse = () => {
|
||
|
return {
|
||
|
responseTypes,
|
||
|
noticeContexts,
|
||
|
isSuccessResponse,
|
||
|
isErrorResponse,
|
||
|
isFailResponse,
|
||
|
};
|
||
|
};
|