usimple-saleor-sdk
Version:
This package contains all queries and mutations that are used in our sample storefront. It can be used for semi-custom or fully-custom (with ability to extend existing queries) storefront solutions.
198 lines • 12 kB
JavaScript
"use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
/* eslint-disable sort-keys */
const types_1 = require("../../api/Checkout/types");
const LocalStorageHandler_1 = require("../../helpers/LocalStorageHandler");
const JobsHandler_1 = require("../JobsHandler");
class CheckoutJobs extends JobsHandler_1.JobsHandler {
constructor(localStorageHandler, apolloClientManager) {
super();
this.provideCheckout = ({ isUserSignedIn, channel, }) => __awaiter(this, void 0, void 0, function* () {
const checkout = LocalStorageHandler_1.LocalStorageHandler.getCheckout();
const { data, error } = yield this.apolloClientManager.getCheckout(isUserSignedIn, channel, checkout === null || checkout === void 0 ? void 0 : checkout.token);
if (checkout) {
checkout.channel = channel || null;
}
if (error) {
return {
dataError: {
error,
type: types_1.DataErrorCheckoutTypes.GET_CHECKOUT,
},
};
}
this.localStorageHandler.setCheckout(data || checkout);
return {
data,
};
});
this.createCheckout = ({ email, lines, channel, shippingAddress, selectedShippingAddressId, billingAddress, selectedBillingAddressId, }) => __awaiter(this, void 0, void 0, function* () {
const cleanedLines = lines.filter(line => line.quantity !== 0);
const { data, error } = yield this.apolloClientManager.createCheckout(email, cleanedLines, channel, shippingAddress, billingAddress);
if (error) {
/**
* TODO: Differentiate errors!!! THIS IS A BUG!!!
* DataErrorCheckoutTypes.SET_SHIPPING_ADDRESS is just one of every possible - instead of deprecated errors, checkoutErrors should be used.
*/
return {
dataError: {
error,
type: types_1.DataErrorCheckoutTypes.SET_SHIPPING_ADDRESS,
},
};
}
this.localStorageHandler.setCheckout(Object.assign(Object.assign({}, data), { selectedBillingAddressId,
selectedShippingAddressId }));
return {
data,
};
});
this.setShippingAddress = ({ checkoutId, shippingAddress, email, selectedShippingAddressId, channel, }) => __awaiter(this, void 0, void 0, function* () {
var _a, _b;
const checkout = LocalStorageHandler_1.LocalStorageHandler.getCheckout();
const { data, error, } = yield this.apolloClientManager.setShippingAddress(shippingAddress, email, checkoutId, channel);
if (error) {
return {
dataError: {
error,
type: types_1.DataErrorCheckoutTypes.SET_SHIPPING_ADDRESS,
},
};
}
if ((data === null || data === void 0 ? void 0 : data.availableShippingMethods) && (data === null || data === void 0 ? void 0 : data.availableShippingMethods[0])) {
const shiopMethod = data === null || data === void 0 ? void 0 : data.availableShippingMethods[0];
if (shiopMethod && shiopMethod.price) {
shiopMethod.price.amount =
((_b = (_a = data === null || data === void 0 ? void 0 : data.shippingPrice) === null || _a === void 0 ? void 0 : _a.gross) === null || _b === void 0 ? void 0 : _b.amount) || 0;
data.availableShippingMethods[0] = shiopMethod || null;
}
}
this.localStorageHandler.setCheckout(Object.assign(Object.assign({}, checkout), { availableShippingMethods: data === null || data === void 0 ? void 0 : data.availableShippingMethods, billingAsShipping: false, email: data === null || data === void 0 ? void 0 : data.email, selectedShippingAddressId, shippingAddress: data === null || data === void 0 ? void 0 : data.shippingAddress, shippingPrice: data === null || data === void 0 ? void 0 : data.shippingPrice }));
return { data };
});
this.setBillingAddress = ({ checkoutId, billingAddress, billingAsShipping, selectedBillingAddressId, }) => __awaiter(this, void 0, void 0, function* () {
const checkout = LocalStorageHandler_1.LocalStorageHandler.getCheckout();
const { data, error, } = yield this.apolloClientManager.setBillingAddress(billingAddress, checkoutId);
if (error) {
return {
dataError: {
error,
type: types_1.DataErrorCheckoutTypes.SET_BILLING_ADDRESS,
},
};
}
this.localStorageHandler.setCheckout(Object.assign(Object.assign({}, checkout), { availablePaymentGateways: data === null || data === void 0 ? void 0 : data.availablePaymentGateways, billingAddress: data === null || data === void 0 ? void 0 : data.billingAddress, billingAsShipping: !!billingAsShipping, selectedBillingAddressId }));
return { data };
});
this.setBillingAddressWithEmail = ({ checkoutId, email, billingAddress, selectedBillingAddressId, }) => __awaiter(this, void 0, void 0, function* () {
const checkout = LocalStorageHandler_1.LocalStorageHandler.getCheckout();
const { data, error, } = yield this.apolloClientManager.setBillingAddressWithEmail(billingAddress, email, checkoutId);
if (error) {
return {
dataError: {
error,
type: types_1.DataErrorCheckoutTypes.SET_BILLING_ADDRESS,
},
};
}
this.localStorageHandler.setCheckout(Object.assign(Object.assign({}, checkout), { availablePaymentGateways: data === null || data === void 0 ? void 0 : data.availablePaymentGateways, billingAddress: data === null || data === void 0 ? void 0 : data.billingAddress, billingAsShipping: false, email: data === null || data === void 0 ? void 0 : data.email, selectedBillingAddressId, shippingPrice: data === null || data === void 0 ? void 0 : data.shippingPrice }));
return { data };
});
this.setShippingMethod = ({ checkoutId, shippingMethodId, }) => __awaiter(this, void 0, void 0, function* () {
const checkout = LocalStorageHandler_1.LocalStorageHandler.getCheckout();
const { data, error, } = yield this.apolloClientManager.setShippingMethod(shippingMethodId, checkoutId);
if (error) {
return {
dataError: {
error,
type: types_1.DataErrorCheckoutTypes.SET_SHIPPING_METHOD,
},
};
}
this.localStorageHandler.setCheckout(Object.assign(Object.assign({}, checkout), { promoCodeDiscount: data === null || data === void 0 ? void 0 : data.promoCodeDiscount, shippingMethod: data === null || data === void 0 ? void 0 : data.shippingMethod, shippingPrice: data === null || data === void 0 ? void 0 : data.shippingPrice }));
return { data };
});
this.addPromoCode = ({ checkoutId, promoCode, }) => __awaiter(this, void 0, void 0, function* () {
const checkout = LocalStorageHandler_1.LocalStorageHandler.getCheckout();
const { data, error } = yield this.apolloClientManager.addPromoCode(promoCode, checkoutId);
if (error) {
return {
dataError: {
error,
type: types_1.DataErrorCheckoutTypes.ADD_PROMO_CODE,
},
};
}
this.localStorageHandler.setCheckout(Object.assign(Object.assign({}, checkout), { promoCodeDiscount: data === null || data === void 0 ? void 0 : data.promoCodeDiscount }));
return { data };
});
this.removePromoCode = ({ checkoutId, promoCode, }) => __awaiter(this, void 0, void 0, function* () {
const checkout = LocalStorageHandler_1.LocalStorageHandler.getCheckout();
const { data, error } = yield this.apolloClientManager.removePromoCode(promoCode, checkoutId);
if (error) {
return {
dataError: {
error,
type: types_1.DataErrorCheckoutTypes.REMOVE_PROMO_CODE,
},
};
}
this.localStorageHandler.setCheckout(Object.assign(Object.assign({}, checkout), { promoCodeDiscount: data === null || data === void 0 ? void 0 : data.promoCodeDiscount }));
return { data };
});
this.createPayment = ({ checkoutId, amount, gateway, token, creditCard, returnUrl, }) => __awaiter(this, void 0, void 0, function* () {
const payment = LocalStorageHandler_1.LocalStorageHandler.getPayment();
const { data, error } = yield this.apolloClientManager.createPayment({
amount,
checkoutId,
gateway,
returnUrl,
token,
});
if (error) {
return {
dataError: {
error,
type: types_1.DataErrorCheckoutTypes.CREATE_PAYMENT,
},
};
}
this.localStorageHandler.setPayment(Object.assign(Object.assign({}, payment), { creditCard, gateway: data === null || data === void 0 ? void 0 : data.gateway, id: data === null || data === void 0 ? void 0 : data.id, token: data === null || data === void 0 ? void 0 : data.token, total: data === null || data === void 0 ? void 0 : data.total }));
return { data };
});
this.completeCheckout = ({ checkoutId, paymentData, redirectUrl, storeSource, }) => __awaiter(this, void 0, void 0, function* () {
const { data, error } = yield this.apolloClientManager.completeCheckout({
checkoutId,
paymentData,
redirectUrl,
storeSource,
});
if (error) {
return {
dataError: {
error,
type: types_1.DataErrorCheckoutTypes.COMPLETE_CHECKOUT,
},
};
}
if (!(data === null || data === void 0 ? void 0 : data.confirmationNeeded)) {
this.localStorageHandler.setCheckout({});
this.localStorageHandler.setPayment({});
}
return { data };
});
this.apolloClientManager = apolloClientManager;
this.localStorageHandler = localStorageHandler;
}
}
exports.default = CheckoutJobs;
//# sourceMappingURL=CheckoutJobs.js.map