UNPKG

@godaddy/react

Version:

The `createCheckoutSession` function creates a new checkout session with GoDaddy's commerce API.

56 lines (54 loc) 2.13 kB
import { H as Button, O as PaymentMethodType, Q as useIsPaymentDisabled, _ as useConfirmCheckout, g as PaymentProvider, o as useCheckoutContext, p as useSquare, rt as useGoDaddyContext, u as useBuildPaymentRequest } from "./checkout-CCruxHvk.js"; import { k as GraphQLErrorWithCodes } from "./utils-DWBfAHfx.js"; import { useCallback, useRef, useState } from "react"; import { useFormContext } from "react-hook-form"; import { jsx } from "react/jsx-runtime"; //#region src/components/checkout/payment/checkout-buttons/credit-card/square.tsx function SquareCreditCardCheckoutButton() { const { t } = useGoDaddyContext(); const { card, isLoading } = useSquare(); const { squarePaymentRequest } = useBuildPaymentRequest(); const confirmCheckout = useConfirmCheckout(); const { setCheckoutErrors, isConfirmingCheckout } = useCheckoutContext(); const isPaymentDisabled = useIsPaymentDisabled(); const form = useFormContext(); const buttonRef = useRef(null); const [isSquareDisabled, setIsSquareDisabled] = useState(false); return /* @__PURE__ */ jsx(Button, { className: "w-full", size: "lg", type: "button", onClick: useCallback(async () => { if (!card) return; if (!await form.trigger()) { const firstError = Object.keys(form.formState.errors)[0]; if (firstError) form.setFocus(firstError); return; } try { setIsSquareDisabled(true); const cardToken = await card.tokenize(squarePaymentRequest); if (cardToken.status === "OK" && cardToken?.token) await confirmCheckout.mutateAsync({ paymentToken: cardToken.token, paymentType: PaymentMethodType.CREDIT_CARD, paymentProvider: PaymentProvider.SQUARE }); } catch (err) { if (err instanceof GraphQLErrorWithCodes) setCheckoutErrors(err.codes); } finally { setIsSquareDisabled(false); } }, [ form, card, confirmCheckout.mutateAsync, squarePaymentRequest, setCheckoutErrors ]), ref: buttonRef, disabled: isLoading || isConfirmingCheckout || isPaymentDisabled || isSquareDisabled, children: t.payment.payNow }); } //#endregion export { SquareCreditCardCheckoutButton };