Create New Item
Item Type
File
Folder
Item Name
Search file in folder and subfolders...
Are you sure want to rename?
primogenial
/
wp-content-20241001222009
/
plugins
/
woocommerce
/
packages
/
woocommerce-blocks
/
assets
/
js
/
base
/
context
/
hooks
:
use-emit-response.ts
Advanced Search
Upload
New Item
Settings
Back
Back Up
Advanced Editor
Save
/** * External dependencies */ import { isObject } from '@woocommerce/types'; export enum responseTypes { SUCCESS = 'success', FAIL = 'failure', ERROR = 'error', } export enum noticeContexts { PAYMENTS = 'wc/payment-area', EXPRESS_PAYMENTS = 'wc/express-payment-area', } export interface ResponseType extends Record< string, unknown > { type: responseTypes; retry?: boolean; } const isResponseOf = ( response: unknown, type: string ): response is ResponseType => { return isObject( response ) && 'type' in response && response.type === type; }; export const isSuccessResponse = ( response: unknown ): response is ResponseType => { return isResponseOf( response, responseTypes.SUCCESS ); }; export const isErrorResponse = ( response: unknown ): response is ResponseType => { return isResponseOf( response, responseTypes.ERROR ); }; export const isFailResponse = ( response: unknown ): response is ResponseType => { return isResponseOf( response, responseTypes.FAIL ); }; export const shouldRetry = ( response: unknown ): boolean => { return ( ! isObject( response ) || typeof response.retry === 'undefined' || response.retry === true ); }; /** * A custom hook exposing response utilities for emitters. */ export const useEmitResponse = () => ( { responseTypes, noticeContexts, shouldRetry, isSuccessResponse, isErrorResponse, isFailResponse, } as const );