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 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 | 24x 24x 24x 24x 24x 24x 24x 2x 2x 2x 1x 1x 2x 2x 2x 2x 2x 2x 24x | import React, { FunctionComponent } from 'react'; import { withCheckout, CheckoutContextProps } from '../../checkout'; import { EMPTY_ARRAY } from '../../common/utility'; import HostedCreditCardPaymentMethod, { HostedCreditCardPaymentMethodProps } from './HostedCreditCardPaymentMethod'; import HostedPaymentMethod, { HostedPaymentMethodProps } from './HostedPaymentMethod'; import { PaymentMethodProps } from './PaymentMethod'; import PaymentMethodProviderType from './PaymentMethodProviderType'; export type PaypalPaymentsProPaymentMethodProps = HostedPaymentMethodProps | HostedCreditCardPaymentMethodProps; interface WithCheckoutPaypalPaymentsProPaymentMethodProps { isHostedPayment: boolean; } /** * Paypal Payments Pro is a snowflake payment method - it can be a hosted * payment method or a credit card payment method depending on where the * checkout process is initiated. If it is started from the cart page via the * PayPal button, it behaves as a hosted payment method. But if it is started * from the checkout page, it behaves as a credit card payment method. */ const PaypalPaymentsProPaymentMethod: FunctionComponent< PaypalPaymentsProPaymentMethodProps & WithCheckoutPaypalPaymentsProPaymentMethodProps > = ({ isHostedPayment, ...props }) => { if (isHostedPayment) { return <HostedPaymentMethod { ...props } />; } return ( <HostedCreditCardPaymentMethod { ...props } /> ); }; function mapToPaypalPaymentsProPaymentMethodProps( { checkoutState }: CheckoutContextProps, { method }: PaymentMethodProps ): WithCheckoutPaypalPaymentsProPaymentMethodProps { const { data: { getCheckout } } = checkoutState; const { payments = EMPTY_ARRAY } = getCheckout() || {}; const selectedHostedMethod = payments.find(({ providerType }) => providerType === PaymentMethodProviderType.Hosted); return { isHostedPayment: selectedHostedMethod ? selectedHostedMethod.providerId === method.id && selectedHostedMethod.gatewayId === method.gateway : false, }; } export default withCheckout(mapToPaypalPaymentsProPaymentMethodProps)(PaypalPaymentsProPaymentMethod); |