@godaddy/react
Version:
The `createCheckoutSession` function creates a new checkout session with GoDaddy's commerce API.
56 lines (54 loc) • 2.13 kB
JavaScript
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 };