Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | 25x 25x 25x 40x 10x 10x 10x 10x 10x 4x 4x 1x |
import { CheckoutService, PaymentMethod } from '@bigcommerce/checkout-sdk';
import { noop } from 'lodash';
import { useCallback, useMemo } from 'react';
type CheckoutServiceInstance = InstanceType<typeof CheckoutService>;
interface Props {
method: PaymentMethod;
deinitializePayment: CheckoutServiceInstance['deinitializePayment'];
initializePayment: CheckoutServiceInstance['initializePayment'];
onUnhandledError?(error: Error): void;
}
export const usePropsToOnMount = (props: Props): () => () => void => {
const { initializePayment, deinitializePayment, method, onUnhandledError = noop } = props;
const options = useMemo(
() => ({
gatewayId: method.gateway,
methodId: method.id,
}),
[method.gateway, method.id]
);
const onInit = useCallback(() => initializePayment(options), [initializePayment, options]);
const onDeinit = useCallback(() => deinitializePayment(options), [deinitializePayment, options]);
return useCallback(() => {
onInit().catch(onUnhandledError);
return () => {
onDeinit().catch(onUnhandledError);
};
}, [onInit, onUnhandledError, onDeinit]);
};
|