/** * External dependencies */ import { useShallowEqual } from '@woocommerce/base-hooks'; import type { PaymentMethods, ExpressPaymentMethods, } from '@woocommerce/type-defs/payments'; /** * Internal dependencies */ import { usePaymentMethodDataContext } from '../../providers/cart-checkout/payment-methods'; interface PaymentMethodState { paymentMethods: PaymentMethods; isInitialized: boolean; } interface ExpressPaymentMethodState { paymentMethods: ExpressPaymentMethods; isInitialized: boolean; } const usePaymentMethodState = ( express = false ): PaymentMethodState | ExpressPaymentMethodState => { const { paymentMethods, expressPaymentMethods, paymentMethodsInitialized, expressPaymentMethodsInitialized, } = usePaymentMethodDataContext(); const currentPaymentMethods = useShallowEqual( paymentMethods ); const currentExpressPaymentMethods = useShallowEqual( expressPaymentMethods ); return { paymentMethods: express ? currentExpressPaymentMethods : currentPaymentMethods, isInitialized: express ? expressPaymentMethodsInitialized : paymentMethodsInitialized, }; }; export const usePaymentMethods = (): | PaymentMethodState | ExpressPaymentMethodState => usePaymentMethodState( false ); export const useExpressPaymentMethods = (): ExpressPaymentMethodState => usePaymentMethodState( true );