File "use-event-handlers.js"

Full Path: /home/vantageo/public_html/cache/cache/cache/cache/cache/cache/cache/.wp-cli/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/payment-method-extensions/payment-methods/stripe/payment-request/use-event-handlers.js
File size: 1.08 KB
MIME-type: text/x-java
Charset: utf-8

/**
 * External dependencies
 */
import { useState, useCallback } from '@wordpress/element';

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

/**
 * A utility hook for maintaining an event handler cache.
 */
export const useEventHandlers = () => {
	const [ paymentRequestEventHandlers, setEventHandlers ] = useState(
		DEFAULT_STRIPE_EVENT_HANDLERS
	);

	const setPaymentRequestEventHandler = useCallback(
		( eventName, handler ) => {
			setEventHandlers( ( prevEventHandlers ) => {
				return {
					...prevEventHandlers,
					[ eventName ]: handler,
				};
			} );
		},
		[ setEventHandlers ]
	);

	const clearPaymentRequestEventHandler = useCallback(
		( eventName ) => {
			// @ts-ignore
			setEventHandlers( ( prevEventHandlers ) => {
				// @ts-ignore
				// eslint-disable-next-line no-unused-vars
				const { [ eventName ]: __, ...newHandlers } = prevEventHandlers;
				return newHandlers;
			} );
		},
		[ setEventHandlers ]
	);
	return {
		paymentRequestEventHandlers,
		setPaymentRequestEventHandler,
		clearPaymentRequestEventHandler,
	};
};