Repository URL to install this package:
|
Version:
0.0.15 ▾
|
import { client } from 'src/bootstrap/client/apolloClient';
import { isObjectWithKeys, isSafe } from 'exotic';
import { isErrorLikeResponse } from '@skava/is-error-like-response';
//
import { cartContainer } from '@skava/packages/core/cart/state';
import { errorContainer } from '@skava/packages/core/notifications';
import { getAddressInfo, setShippingAddressParams } from '@skava/packages/core/addressAndPayment';
//
import { toCreditCard } from '@skava/packages/ui/forms';
import { AddPayment, DeletePayment } from '../queries';
const FIXTURE_PARAMS = {
type: 'CREDITCARD',
creditCard: {
number: '4111111111111111',
type: '001',
cvv: '123',
expirationMonth: '12',
expirationYear: '23',
name: '001',
},
address: {
addressLine1: '5999 eh street',
addressLine2: '',
postalCode: '111222',
phone: '6253761523',
city: 'Courtenay',
state: 'BC',
firstName: 'ssadas',
lastName: 'dasd',
middleName: '',
country: 'US',
email: 'james.rue21@skava.com',
},
amount: '44.68',
};
function propsToPaymentParams(params = FIXTURE_PARAMS) {
const { total } = cartContainer;
// was `cards` @@packages
const { card = FIXTURE_PARAMS.creditCard, address = FIXTURE_PARAMS.address } = params;
const shippingAddressDetails = isObjectWithKeys(address) ? address : getAddressInfo();
const shippingAddressParams = setShippingAddressParams(shippingAddressDetails);
const creditCardParams = toAddPaymentParams(card);
const cardType = card.cardNumber
? 'CREDITCARD'
: card.purchaseOrder
? 'PURCHASEORDER'
: 'CREDITCARD';
const paymentParams = {
creditCard: creditCardParams,
address: shippingAddressParams,
type: cardType,
amount: total,
};
return paymentParams;
}
export async function addPaymentBinding(params) {
// const paymentParams = propsToPaymentParams(params)
const paymentParams = params;
console.log({ params, paymentParams });
const response = await client.mutate({
mutation: AddPayment,
variables: {
creditCard: paymentParams.creditCard,
address: paymentParams.address,
type: paymentParams.type,
// amount: '45.98',
amount: paymentParams.amount,
},
});
console.debug('[CheckoutPayment] addPayment');
console.dir({ params, response });
if (isErrorLikeResponse(response)) {
errorContainer.notifyFor('updatePaymentFailure');
}
else {
errorContainer.setMessage('added card');
}
return response;
}
// @todo add nevers
function toAddPaymentParams(params) {
const { cardId, cardType, cardNumber, purchaseOrder, firstName, lastName,
// @todo deprecate these @@packages
securityCode = params.securitycode, expirationMonth = params.expirationmonth || params.expiryMonth, expirationYear = params.expirationyear || params.expiryYear, } = params;
const cardDetails = isSafe(cardType) === false ? toCreditCard(cardNumber) : [];
const type = cardType || cardDetails.owns;
const creditCardDetails = {
id: cardId && cardId,
number: cardNumber || purchaseOrder,
cvv: securityCode,
name: type,
type,
expirationMonth,
expirationYear,
firstName,
lastName,
};
return creditCardDetails;
}
export async function deletePaymentBinding() {
const response = await client.mutate({
mutation: DeletePayment,
});
// await updateCart()
return { response };
}
export async function deleteThenAddAddPaymentBinding(variables) {
await deletePaymentBinding();
const paymentResponse = await addPaymentBinding(variables);
return paymentResponse;
}
export { deletePaymentBinding as deleteAllPaymentsBinding };
//# sourceMappingURL=bindings.js.map