@malga-checkout/core
Version:
Core components for Malga Checkout
49 lines (48 loc) • 1.84 kB
JavaScript
import credit from '../../stores/credit';
import payment from '../../stores/payment';
import settings from '../../stores/settings';
const handleCreditValidations = () => {
const hasInstallments = settings.paymentMethods.credit.installments.show;
const fields = Object.assign({}, credit.validations.fields);
if (!hasInstallments)
delete fields.installments;
const validations = Object.values(fields);
const untouchedFields = validations.filter((field) => field === null);
const fieldsWithoutErrors = validations.filter((field) => !!field);
if (!untouchedFields.length && !fieldsWithoutErrors.length) {
return false;
}
return true;
};
const handleSavedCardValidations = () => {
const hasInstallments = settings.paymentMethods.credit.installments.show;
const validCard = payment.cvv.length >= 3 && payment.cardId;
const validInstallments = payment.installments && payment.installments !== 'none';
if (validCard && validInstallments && hasInstallments) {
return false;
}
if (validCard && !hasInstallments) {
return false;
}
return true;
};
const handleDripValidations = () => false;
const handlePixValidations = () => false;
const handleBoletoValidations = () => false;
const handleNuPayValidations = () => false;
const handleUnselectPaymentMethodValidations = () => true;
export const handleDisablePayButton = () => {
const paymentMethodsOptions = {
credit: handleCreditValidations,
savedCard: handleSavedCardValidations,
pix: handlePixValidations,
boleto: handleBoletoValidations,
default: handleUnselectPaymentMethodValidations,
nupay: handleNuPayValidations,
drip: handleDripValidations,
};
if (payment.isSelectedSavedCard) {
return paymentMethodsOptions.savedCard();
}
return paymentMethodsOptions[payment.selectedPaymentMethod || 'default']();
};