UNPKG

@open-tender/utils

Version:

A library of utils for use with Open Tender applications that utilize our cloud-based Order API.

71 lines (70 loc) 2.85 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.useCreditCardForm = void 0; const tslib_1 = require("tslib"); const react_1 = require("react"); const __1 = require("../"); const useCreditCardForm = (loading, error, data, cardType, addCard, callback, includeRecaptcha, revenue_center_id, kountSessionId, requireCardholderName = false, getRecaptchaToken) => { const submitRef = (0, react_1.useRef)(null); const [submitting, setSubmitting] = (0, react_1.useState)(false); const [errors, setErrors] = (0, react_1.useState)({}); (0, react_1.useEffect)(() => { if (loading === 'idle') { setSubmitting(false); if (error) { setErrors((0, __1.makeFormErrors)(error)); } } }, [loading, error]); const handleSubmit = (evt) => tslib_1.__awaiter(void 0, void 0, void 0, function* () { var _a, _b; evt === null || evt === void 0 ? void 0 : evt.preventDefault(); setErrors({}); if (!data || !cardType) return; const { card, errors: cardErrors } = (0, __1.validateCreditCard)(data, cardType, requireCardholderName); if (cardErrors) { setErrors(cardErrors); setSubmitting(false); } else { const cardRc = revenue_center_id ? Object.assign(Object.assign({}, card), { revenue_center_id }) : card; if (kountSessionId) cardRc.kount_device_session_id = kountSessionId; if (includeRecaptcha) { try { const token = yield (getRecaptchaToken === null || getRecaptchaToken === void 0 ? void 0 : getRecaptchaToken()); if (!token) { setSubmitting(false); setErrors({ form: 'Please complete the recaptcha before submitting' }); } else { setSubmitting(true); addCard(Object.assign(Object.assign({}, cardRc), { token }), callback); } } catch (err) { setSubmitting(false); setErrors({ form: 'Please complete the recaptcha before submitting' }); } } else { setSubmitting(true); addCard(cardRc, callback); } } ((_a = submitRef.current) === null || _a === void 0 ? void 0 : _a.blur) && ((_b = submitRef.current) === null || _b === void 0 ? void 0 : _b.blur()); }); return { submitRef, data, errors, submitting, handleSubmit }; }; exports.useCreditCardForm = useCreditCardForm;