addio-ecomm-sdk 1.3.76 → 1.3.78
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +1066 -1647
- package/dist/index.js.map +1 -1
- package/dist/lib/constants/components/CreditCardInput.js +22 -36
- package/dist/lib/constants/components/CreditCardInput.js.map +1 -1
- package/dist/lib/constants/components/Snackbar.js +10 -20
- package/dist/lib/constants/components/Snackbar.js.map +1 -1
- package/dist/lib/constants/contexts/CartContext/CartContextProvider.js +566 -906
- package/dist/lib/constants/contexts/CartContext/CartContextProvider.js.map +1 -1
- package/dist/lib/constants/contexts/CartContext/index.js +34 -114
- package/dist/lib/constants/contexts/CartContext/index.js.map +1 -1
- package/dist/lib/constants/contexts/DataContext/DataContextProvider.js +103 -234
- package/dist/lib/constants/contexts/DataContext/DataContextProvider.js.map +1 -1
- package/dist/lib/constants/contexts/DataContext/index.js +22 -62
- package/dist/lib/constants/contexts/DataContext/index.js.map +1 -1
- package/dist/lib/constants/contexts/LogContext/LogContextProvider.js +24 -87
- package/dist/lib/constants/contexts/LogContext/LogContextProvider.js.map +1 -1
- package/dist/lib/constants/contexts/LogContext/index.js +4 -42
- package/dist/lib/constants/contexts/LogContext/index.js.map +1 -1
- package/dist/lib/constants/contexts/ModalContext/ModalContextProvider.js +16 -31
- package/dist/lib/constants/contexts/ModalContext/ModalContextProvider.js.map +1 -1
- package/dist/lib/constants/contexts/ModalContext/index.js +11 -13
- package/dist/lib/constants/contexts/ModalContext/index.js.map +1 -1
- package/dist/lib/constants/contexts/SDKContext/SDKProvider.js +14 -70
- package/dist/lib/constants/contexts/SDKContext/SDKProvider.js.map +1 -1
- package/dist/lib/constants/contexts/SDKContext/index.js +1 -1
- package/dist/lib/constants/contexts/SDKContext/index.js.map +1 -1
- package/dist/lib/constants/contexts/SnackbarContext/SnackbarContext.js +3 -3
- package/dist/lib/constants/contexts/SnackbarContext/SnackbarContext.js.map +1 -1
- package/dist/lib/constants/contexts/SnackbarContext/SnackbarContextProvider.js +17 -31
- package/dist/lib/constants/contexts/SnackbarContext/SnackbarContextProvider.js.map +1 -1
- package/dist/lib/constants/contexts/SnackbarContext/interfaces/ISnackbarContext.d.ts +2 -0
- package/dist/lib/constants/contexts/SnackbarContext/interfaces/ISnackbarContext.js +2 -2
- package/dist/lib/constants/contexts/SnackbarContext/interfaces/ISnackbarContext.js.map +1 -1
- package/dist/lib/constants/contexts/StockNotifContext/StockNotifContextProvider.js +51 -118
- package/dist/lib/constants/contexts/StockNotifContext/StockNotifContextProvider.js.map +1 -1
- package/dist/lib/constants/contexts/StockNotifContext/index.js +3 -3
- package/dist/lib/constants/contexts/StockNotifContext/index.js.map +1 -1
- package/dist/lib/constants/contexts/UserContext/UserContextProvider.js +240 -397
- package/dist/lib/constants/contexts/UserContext/UserContextProvider.js.map +1 -1
- package/dist/lib/constants/contexts/UserContext/index.js +15 -69
- package/dist/lib/constants/contexts/UserContext/index.js.map +1 -1
- package/dist/lib/constants/contexts/WishlistContext/WishlistContextProvider.js +157 -253
- package/dist/lib/constants/contexts/WishlistContext/WishlistContextProvider.js.map +1 -1
- package/dist/lib/constants/contexts/WishlistContext/index.js +4 -4
- package/dist/lib/constants/contexts/WishlistContext/index.js.map +1 -1
- package/dist/lib/constants/hooks/useCart.js +3 -3
- package/dist/lib/constants/hooks/useCart.js.map +1 -1
- package/dist/lib/constants/hooks/useData.js +3 -3
- package/dist/lib/constants/hooks/useData.js.map +1 -1
- package/dist/lib/constants/hooks/useLogs.js +3 -3
- package/dist/lib/constants/hooks/useLogs.js.map +1 -1
- package/dist/lib/constants/hooks/useModal.js +3 -3
- package/dist/lib/constants/hooks/useModal.js.map +1 -1
- package/dist/lib/constants/hooks/useSDK.js +3 -3
- package/dist/lib/constants/hooks/useSDK.js.map +1 -1
- package/dist/lib/constants/hooks/useSnackbar.js +3 -3
- package/dist/lib/constants/hooks/useSnackbar.js.map +1 -1
- package/dist/lib/constants/hooks/useStockNotif.js +3 -3
- package/dist/lib/constants/hooks/useStockNotif.js.map +1 -1
- package/dist/lib/constants/hooks/useUser.js +3 -3
- package/dist/lib/constants/hooks/useUser.js.map +1 -1
- package/dist/lib/constants/hooks/useWishlist.js +3 -3
- package/dist/lib/constants/hooks/useWishlist.js.map +1 -1
- package/dist/lib/models/image/index.js +5 -10
- package/dist/lib/models/image/index.js.map +1 -1
- package/dist/lib/models/stockNotification/index.js +58 -118
- package/dist/lib/models/stockNotification/index.js.map +1 -1
- package/dist/lib/models/wishlist/index.js +73 -142
- package/dist/lib/models/wishlist/index.js.map +1 -1
- package/dist/utils/algolia.js +27 -73
- package/dist/utils/algolia.js.map +1 -1
- package/dist/utils/analytics.js +68 -79
- package/dist/utils/analytics.js.map +1 -1
- package/dist/utils/cart.js +10 -11
- package/dist/utils/cart.js.map +1 -1
- package/dist/utils/contentful.js +31 -104
- package/dist/utils/contentful.js.map +1 -1
- package/dist/utils/functions.js +54 -71
- package/dist/utils/functions.js.map +1 -1
- package/dist/utils/getSDK.js +12 -70
- package/dist/utils/getSDK.js.map +1 -1
- package/dist/utils/initStoreData.js +12 -57
- package/dist/utils/initStoreData.js.map +1 -1
- package/dist/utils/larivieremeunier.js +1 -1
- package/dist/utils/larivieremeunier.js.map +1 -1
- package/dist/utils/technosupply.js +1 -1
- package/dist/utils/technosupply.js.map +1 -1
- package/package.json +2 -2
|
@@ -1,621 +1,383 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __assign = (this && this.__assign) || function () {
|
|
3
|
-
__assign = Object.assign || function(t) {
|
|
4
|
-
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
-
s = arguments[i];
|
|
6
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
-
t[p] = s[p];
|
|
8
|
-
}
|
|
9
|
-
return t;
|
|
10
|
-
};
|
|
11
|
-
return __assign.apply(this, arguments);
|
|
12
|
-
};
|
|
13
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
14
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
15
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
16
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
17
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
18
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
19
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
20
|
-
});
|
|
21
|
-
};
|
|
22
|
-
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
23
|
-
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
24
|
-
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
25
|
-
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
26
|
-
function step(op) {
|
|
27
|
-
if (f) throw new TypeError("Generator is already executing.");
|
|
28
|
-
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
29
|
-
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
30
|
-
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
31
|
-
switch (op[0]) {
|
|
32
|
-
case 0: case 1: t = op; break;
|
|
33
|
-
case 4: _.label++; return { value: op[1], done: false };
|
|
34
|
-
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
35
|
-
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
36
|
-
default:
|
|
37
|
-
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
38
|
-
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
39
|
-
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
40
|
-
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
41
|
-
if (t[2]) _.ops.pop();
|
|
42
|
-
_.trys.pop(); continue;
|
|
43
|
-
}
|
|
44
|
-
op = body.call(thisArg, _);
|
|
45
|
-
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
46
|
-
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
47
|
-
}
|
|
48
|
-
};
|
|
49
2
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
50
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
51
4
|
};
|
|
52
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
return [4, getCartFromDatabase(cartIDInLocalStorage)];
|
|
92
|
-
case 2:
|
|
93
|
-
newCart = _a.sent();
|
|
94
|
-
if (!!newCart && !!!newCart.clerk_id) {
|
|
95
|
-
if (newCart.status < Cart_1.CartStatusEnum.CHECKOUT_PAYMENT_SUCCESS) {
|
|
96
|
-
return [2, newCart];
|
|
97
|
-
}
|
|
98
|
-
else {
|
|
99
|
-
localStorage.removeItem("".concat(api.org, "__cart"));
|
|
100
|
-
}
|
|
6
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
7
|
+
const react_1 = require("react");
|
|
8
|
+
const Cart_1 = require("addio-admin-sdk/dist/Interfaces/Cart");
|
|
9
|
+
const ISnackbarContext_1 = require("../SnackbarContext/interfaces/ISnackbarContext");
|
|
10
|
+
const _1 = __importDefault(require("."));
|
|
11
|
+
const useSnackbar_1 = __importDefault(require("../../hooks/useSnackbar"));
|
|
12
|
+
const useSDK_1 = __importDefault(require("../../hooks/useSDK"));
|
|
13
|
+
const useData_1 = __importDefault(require("../../hooks/useData"));
|
|
14
|
+
const useUser_1 = __importDefault(require("../../hooks/useUser"));
|
|
15
|
+
const functions_1 = require("../../../../utils/functions");
|
|
16
|
+
const functions_2 = require("../../../../utils/functions");
|
|
17
|
+
const cart_1 = require("addio-admin-sdk/dist/utils/cart");
|
|
18
|
+
const discount_1 = require("addio-admin-sdk/dist/utils/discount");
|
|
19
|
+
const g2_1 = require("addio-admin-sdk/dist/rules/GR/utils/g2");
|
|
20
|
+
const CartContextProvider = ({ locale, children }) => {
|
|
21
|
+
const sdk = (0, useSDK_1.default)();
|
|
22
|
+
const { currency } = (0, useData_1.default)();
|
|
23
|
+
const { isUserLoggedIn, loaded: userLoaded } = (0, useUser_1.default)();
|
|
24
|
+
const { setSnackbar } = (0, useSnackbar_1.default)();
|
|
25
|
+
const [cartData, setCartData] = (0, react_1.useState)();
|
|
26
|
+
const [cartErrors, setCartErrors] = (0, react_1.useState)([]);
|
|
27
|
+
const [loading, setLoading] = (0, react_1.useState)(false);
|
|
28
|
+
const [cartSliderOpen, setCartSliderOpen] = (0, react_1.useState)(false);
|
|
29
|
+
const [isGuest, setIsGuest] = (0, react_1.useState)();
|
|
30
|
+
const api = !!sdk ? sdk.getAPIInfos() : null;
|
|
31
|
+
const initCart = async () => {
|
|
32
|
+
if (!!!api)
|
|
33
|
+
return;
|
|
34
|
+
const cartIDInLocalStorage = localStorage.getItem(`${api.org}__cart`);
|
|
35
|
+
if (!!cartIDInLocalStorage) {
|
|
36
|
+
try {
|
|
37
|
+
const newCart = await getCartFromDatabase(cartIDInLocalStorage);
|
|
38
|
+
if (!!newCart && !!!newCart.clerk_id) {
|
|
39
|
+
if (newCart.status < Cart_1.CartStatusEnum.CHECKOUT_PAYMENT_SUCCESS) {
|
|
40
|
+
return newCart;
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
localStorage.removeItem(`${api.org}__cart`);
|
|
101
44
|
}
|
|
102
|
-
return [3, 4];
|
|
103
|
-
case 3:
|
|
104
|
-
_2 = _a.sent();
|
|
105
|
-
return [2, undefined];
|
|
106
|
-
case 4: return [2, undefined];
|
|
107
|
-
}
|
|
108
|
-
});
|
|
109
|
-
}); };
|
|
110
|
-
var updateEmail = function (newCart, email, saveToDatabase) {
|
|
111
|
-
if (saveToDatabase === void 0) { saveToDatabase = true; }
|
|
112
|
-
return __awaiter(void 0, void 0, void 0, function () {
|
|
113
|
-
var cart;
|
|
114
|
-
return __generator(this, function (_a) {
|
|
115
|
-
switch (_a.label) {
|
|
116
|
-
case 0:
|
|
117
|
-
cart = !!newCart ? newCart : !!cartData ? cartData : (0, Cart_1.getDefaultCart)(Cart_1.CartTypeEnum.WEB);
|
|
118
|
-
if (!!!saveToDatabase) return [3, 2];
|
|
119
|
-
return [4, saveCart({ user_email: email })];
|
|
120
|
-
case 1:
|
|
121
|
-
cart = _a.sent();
|
|
122
|
-
return [3, 3];
|
|
123
|
-
case 2:
|
|
124
|
-
if (!!cart) {
|
|
125
|
-
cart = __assign(__assign({}, cart), { user_email: email });
|
|
126
|
-
}
|
|
127
|
-
_a.label = 3;
|
|
128
|
-
case 3: return [2, cart];
|
|
129
|
-
}
|
|
130
|
-
});
|
|
131
|
-
});
|
|
132
|
-
};
|
|
133
|
-
var updateDefaultCustomer = function (newCart, email, id, proInfo, saveToDatabase) {
|
|
134
|
-
if (saveToDatabase === void 0) { saveToDatabase = true; }
|
|
135
|
-
return __awaiter(void 0, void 0, void 0, function () {
|
|
136
|
-
var cart, newCustomerInfo;
|
|
137
|
-
return __generator(this, function (_a) {
|
|
138
|
-
switch (_a.label) {
|
|
139
|
-
case 0:
|
|
140
|
-
cart = !!newCart ? newCart : !!cartData ? cartData : (0, Cart_1.getDefaultCart)(Cart_1.CartTypeEnum.WEB);
|
|
141
|
-
newCustomerInfo = {
|
|
142
|
-
customer_id: id,
|
|
143
|
-
user_email: email,
|
|
144
|
-
customer_info: __assign({ customer_default_email: email }, (proInfo || {}))
|
|
145
|
-
};
|
|
146
|
-
if (!!!saveToDatabase) return [3, 2];
|
|
147
|
-
return [4, saveCart(newCustomerInfo)];
|
|
148
|
-
case 1:
|
|
149
|
-
_a.sent();
|
|
150
|
-
return [3, 3];
|
|
151
|
-
case 2:
|
|
152
|
-
cart = __assign(__assign({}, (!!cart ? cart : (0, Cart_1.getDefaultCart)(Cart_1.CartTypeEnum.WEB))), newCustomerInfo);
|
|
153
|
-
_a.label = 3;
|
|
154
|
-
case 3: return [2, cart];
|
|
155
45
|
}
|
|
156
|
-
}
|
|
157
|
-
|
|
46
|
+
}
|
|
47
|
+
catch (_) {
|
|
48
|
+
return undefined;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
return undefined;
|
|
158
52
|
};
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
}, locale),
|
|
168
|
-
type: ISnackbarContext_1.SnackbarTypeEnum.ERROR,
|
|
169
|
-
isShown: true,
|
|
170
|
-
isCart: true
|
|
171
|
-
});
|
|
172
|
-
if (!!!shouldSave) return [3, 2];
|
|
173
|
-
return [4, saveCart(undefined)];
|
|
174
|
-
case 1:
|
|
175
|
-
_a.sent();
|
|
176
|
-
_a.label = 2;
|
|
177
|
-
case 2: return [2];
|
|
53
|
+
const updateEmail = async (newCart, email, saveToDatabase = true) => {
|
|
54
|
+
let cart = !!newCart ? newCart : !!cartData ? cartData : (0, Cart_1.getDefaultCart)(Cart_1.CartTypeEnum.WEB);
|
|
55
|
+
if (!!saveToDatabase) {
|
|
56
|
+
cart = await saveCart({ user_email: email });
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
if (!!cart) {
|
|
60
|
+
cart = Object.assign(Object.assign({}, cart), { user_email: email });
|
|
178
61
|
}
|
|
179
|
-
}
|
|
180
|
-
|
|
181
|
-
var addItem = function (newCart, items, retro, useParentName, saveToDatabase, defaultAdd, isServiceUpsellOfSku, customPriceList) {
|
|
182
|
-
if (retro === void 0) { retro = true; }
|
|
183
|
-
if (useParentName === void 0) { useParentName = false; }
|
|
184
|
-
if (saveToDatabase === void 0) { saveToDatabase = true; }
|
|
185
|
-
if (defaultAdd === void 0) { defaultAdd = false; }
|
|
186
|
-
if (isServiceUpsellOfSku === void 0) { isServiceUpsellOfSku = false; }
|
|
187
|
-
return __awaiter(void 0, void 0, void 0, function () {
|
|
188
|
-
var cart, addedValues, i, productName;
|
|
189
|
-
return __generator(this, function (_a) {
|
|
190
|
-
switch (_a.label) {
|
|
191
|
-
case 0:
|
|
192
|
-
if (!!!api || !!!sdk)
|
|
193
|
-
throw new Error('SDK not initialised');
|
|
194
|
-
cart = !!newCart ? newCart : !!cartData ? cartData : (0, Cart_1.getDefaultCart)(Cart_1.CartTypeEnum.WEB);
|
|
195
|
-
if (!!isGuest && typeof isGuest === 'string' && !!cart.user_email) {
|
|
196
|
-
cart = __assign(__assign({}, cart), { user_email: isGuest });
|
|
197
|
-
}
|
|
198
|
-
return [4, (0, cart_1.addCartItems)(cart, Array.isArray(items) ? items : [items], sdk.products.getOneInventoryItem, api.org !== 'gr', _handleInventoryError, defaultAdd, isServiceUpsellOfSku, customPriceList)];
|
|
199
|
-
case 1:
|
|
200
|
-
addedValues = _a.sent();
|
|
201
|
-
cart = addedValues.cartData;
|
|
202
|
-
if (!!!saveToDatabase) return [3, 3];
|
|
203
|
-
return [4, saveCart(cart)];
|
|
204
|
-
case 2:
|
|
205
|
-
cart = _a.sent();
|
|
206
|
-
_a.label = 3;
|
|
207
|
-
case 3:
|
|
208
|
-
if (!!retro && !!items && (Array.isArray(items) ? !!items.length : true)) {
|
|
209
|
-
i = Array.isArray(items) ? items[0] : items;
|
|
210
|
-
productName = useParentName ? i.parent_name : i.name;
|
|
211
|
-
if (!!addedValues.updated) {
|
|
212
|
-
setSnackbar({
|
|
213
|
-
title: (0, functions_1.getStringByLang)({
|
|
214
|
-
en: "".concat(!!productName ? (0, functions_1.translate)(locale || 'en', productName) : 'The item', " has been successfuly updated in your cart!"),
|
|
215
|
-
fr: "".concat(!!productName ? (0, functions_1.translate)(locale || 'fr', productName) : "L'item", " a bien \u00E9t\u00E9 mis \u00E0 jour dans votre panier!")
|
|
216
|
-
}, locale),
|
|
217
|
-
type: ISnackbarContext_1.SnackbarTypeEnum.SUCCESS,
|
|
218
|
-
isShown: true,
|
|
219
|
-
isCart: true
|
|
220
|
-
});
|
|
221
|
-
}
|
|
222
|
-
else if (!!addedValues.added) {
|
|
223
|
-
setSnackbar({
|
|
224
|
-
title: (0, functions_1.getStringByLang)({
|
|
225
|
-
en: "".concat(!!productName ? (0, functions_1.translate)(locale || 'en', productName) : 'The item', " has been successfuly added to your cart!"),
|
|
226
|
-
fr: "".concat(!!productName ? (0, functions_1.translate)(locale || 'fr', productName) : "L'item", " a bien \u00E9t\u00E9 ajout\u00E9 \u00E0 votre panier!")
|
|
227
|
-
}, locale),
|
|
228
|
-
type: ISnackbarContext_1.SnackbarTypeEnum.SUCCESS,
|
|
229
|
-
isShown: true,
|
|
230
|
-
isCart: true
|
|
231
|
-
});
|
|
232
|
-
}
|
|
233
|
-
if (!!!addedValues.maxQtyItems) {
|
|
234
|
-
setCartSliderOpen(true);
|
|
235
|
-
}
|
|
236
|
-
}
|
|
237
|
-
return [2, cart];
|
|
238
|
-
}
|
|
239
|
-
});
|
|
240
|
-
});
|
|
62
|
+
}
|
|
63
|
+
return cart;
|
|
241
64
|
};
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
if (!!!saveToDatabase) return [3, 3];
|
|
257
|
-
return [4, saveCart({ items: updatedValues.updatedCart.items })];
|
|
258
|
-
case 2:
|
|
259
|
-
updatedItemsCart = _a.sent();
|
|
260
|
-
_a.label = 3;
|
|
261
|
-
case 3: return [2, updatedItemsCart];
|
|
262
|
-
}
|
|
263
|
-
});
|
|
264
|
-
});
|
|
65
|
+
const updateDefaultCustomer = async (newCart, email, id, proInfo, saveToDatabase = true) => {
|
|
66
|
+
let cart = !!newCart ? newCart : !!cartData ? cartData : (0, Cart_1.getDefaultCart)(Cart_1.CartTypeEnum.WEB);
|
|
67
|
+
const newCustomerInfo = {
|
|
68
|
+
customer_id: id,
|
|
69
|
+
user_email: email,
|
|
70
|
+
customer_info: Object.assign({ customer_default_email: email }, (proInfo || {}))
|
|
71
|
+
};
|
|
72
|
+
if (!!saveToDatabase) {
|
|
73
|
+
await saveCart(newCustomerInfo);
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
cart = Object.assign(Object.assign({}, (!!cart ? cart : (0, Cart_1.getDefaultCart)(Cart_1.CartTypeEnum.WEB))), newCustomerInfo);
|
|
77
|
+
}
|
|
78
|
+
return cart;
|
|
265
79
|
};
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
if (!!!saveToDatabase) return [3, 2];
|
|
276
|
-
return [4, saveCart({ items: cart.items })];
|
|
277
|
-
case 1:
|
|
278
|
-
cart = _a.sent();
|
|
279
|
-
_a.label = 2;
|
|
280
|
-
case 2: return [2, cart];
|
|
281
|
-
}
|
|
282
|
-
});
|
|
80
|
+
const _handleInventoryError = async (shouldSave) => {
|
|
81
|
+
setSnackbar({
|
|
82
|
+
title: (0, functions_1.getStringByLang)({
|
|
83
|
+
en: 'This item is unavailable, or you haved reached the maximum amount you can add to your cart.',
|
|
84
|
+
fr: 'Cet item est indisponible, ou vous avez atteint la quantité maximale déjà au panier.'
|
|
85
|
+
}, locale),
|
|
86
|
+
type: ISnackbarContext_1.SnackbarTypeEnum.ERROR,
|
|
87
|
+
isShown: true,
|
|
88
|
+
isCart: true
|
|
283
89
|
});
|
|
90
|
+
if (!!shouldSave)
|
|
91
|
+
await saveCart(undefined);
|
|
284
92
|
};
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
responseData = (_a.sent());
|
|
311
|
-
if (responseData.status != 200) {
|
|
312
|
-
throw 'Erreur lors de la requête des quotes.' + responseData.error;
|
|
313
|
-
}
|
|
314
|
-
response = responseData.data;
|
|
315
|
-
setCartData(response.cart);
|
|
316
|
-
return [2, response.actionsDone];
|
|
317
|
-
case 4:
|
|
318
|
-
error_1 = _a.sent();
|
|
319
|
-
console.log('error in verifyCart: ', error_1);
|
|
320
|
-
return [3, 5];
|
|
321
|
-
case 5: return [2, false];
|
|
93
|
+
const addItem = async (newCart, items, retro = true, useParentName = false, saveToDatabase = true, defaultAdd = false, isServiceUpsellOfSku = false, customPriceList) => {
|
|
94
|
+
if (!!!api || !!!sdk)
|
|
95
|
+
throw new Error('SDK not initialised');
|
|
96
|
+
let cart = !!newCart ? newCart : !!cartData ? cartData : (0, Cart_1.getDefaultCart)(Cart_1.CartTypeEnum.WEB);
|
|
97
|
+
if (!!isGuest && typeof isGuest === 'string' && !!cart.user_email) {
|
|
98
|
+
cart = Object.assign(Object.assign({}, cart), { user_email: isGuest });
|
|
99
|
+
}
|
|
100
|
+
const addedValues = await (0, cart_1.addCartItems)(cart, Array.isArray(items) ? items : [items], sdk.products.getOneInventoryItem, api.org !== 'gr', _handleInventoryError, defaultAdd, isServiceUpsellOfSku, customPriceList);
|
|
101
|
+
cart = addedValues.cartData;
|
|
102
|
+
if (!!saveToDatabase) {
|
|
103
|
+
cart = await saveCart(cart);
|
|
104
|
+
}
|
|
105
|
+
if (!!retro && !!items && (Array.isArray(items) ? !!items.length : true)) {
|
|
106
|
+
const i = Array.isArray(items) ? items[0] : items;
|
|
107
|
+
const productName = useParentName ? i.parent_name : i.name;
|
|
108
|
+
if (!!addedValues.updated) {
|
|
109
|
+
setSnackbar({
|
|
110
|
+
title: (0, functions_1.getStringByLang)({
|
|
111
|
+
en: `${!!productName ? (0, functions_1.translate)(locale || 'en', productName) : 'The item'} has been successfuly updated in your cart!`,
|
|
112
|
+
fr: `${!!productName ? (0, functions_1.translate)(locale || 'fr', productName) : `L'item`} a bien été mis à jour dans votre panier!`
|
|
113
|
+
}, locale),
|
|
114
|
+
type: ISnackbarContext_1.SnackbarTypeEnum.SUCCESS,
|
|
115
|
+
isShown: true,
|
|
116
|
+
isCart: true
|
|
117
|
+
});
|
|
322
118
|
}
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
data: undefined,
|
|
340
|
-
error: "Couldn't convert cart data"
|
|
341
|
-
}];
|
|
342
|
-
if (cart.status >= Cart_1.CartStatusEnum.CHECKOUT_PAYMENT_SUCCESS)
|
|
343
|
-
throw new Error("Can't process a paid or higher status cart.");
|
|
344
|
-
return [4, (0, functions_2.toBase64)(file)];
|
|
345
|
-
case 1:
|
|
346
|
-
base64 = _e.sent();
|
|
347
|
-
if (typeof base64 !== 'string') {
|
|
348
|
-
return [2, {
|
|
349
|
-
cart: cart,
|
|
350
|
-
data: undefined,
|
|
351
|
-
error: "Couldn't convert file to base64"
|
|
352
|
-
}];
|
|
353
|
-
}
|
|
354
|
-
return [4, fetch("".concat(api.api, "/cart/").concat(cart.id, "/uploadBase64"), {
|
|
355
|
-
method: 'PUT',
|
|
356
|
-
headers: {
|
|
357
|
-
Authorization: "Bearer ".concat(api.token),
|
|
358
|
-
'Content-Type': 'application/json',
|
|
359
|
-
'x-gng-ecomm-token': api.userToken
|
|
360
|
-
},
|
|
361
|
-
body: JSON.stringify({
|
|
362
|
-
base64: base64
|
|
363
|
-
})
|
|
364
|
-
})];
|
|
365
|
-
case 2:
|
|
366
|
-
request = _e.sent();
|
|
367
|
-
return [4, request.json()];
|
|
368
|
-
case 3:
|
|
369
|
-
responseData = (_e.sent());
|
|
370
|
-
if (responseData.status != 200) {
|
|
371
|
-
throw new Error("Impossible d'uploader le fichier" + responseData.error);
|
|
372
|
-
}
|
|
373
|
-
if (!!!responseData.data) return [3, 6];
|
|
374
|
-
if (!!!saveToDatabase) return [3, 5];
|
|
375
|
-
return [4, saveCart({
|
|
376
|
-
shipping_payload: cart.shipping_payload
|
|
377
|
-
? __assign(__assign({}, cart.shipping_payload), (_a = {}, _a[propsName] = responseData.data, _a)) : (_b = {},
|
|
378
|
-
_b[propsName] = responseData.data,
|
|
379
|
-
_b)
|
|
380
|
-
})];
|
|
381
|
-
case 4:
|
|
382
|
-
cart = _e.sent();
|
|
383
|
-
return [3, 6];
|
|
384
|
-
case 5:
|
|
385
|
-
cart = __assign(__assign({}, cart), { shipping_payload: cart.shipping_payload
|
|
386
|
-
? __assign(__assign({}, cart.shipping_payload), (_c = {}, _c[propsName] = responseData.data, _c)) : (_d = {},
|
|
387
|
-
_d[propsName] = responseData.data,
|
|
388
|
-
_d) });
|
|
389
|
-
_e.label = 6;
|
|
390
|
-
case 6: return [2, { cart: cart, data: responseData.data, error: undefined }];
|
|
391
|
-
}
|
|
392
|
-
});
|
|
393
|
-
});
|
|
119
|
+
else if (!!addedValues.added) {
|
|
120
|
+
setSnackbar({
|
|
121
|
+
title: (0, functions_1.getStringByLang)({
|
|
122
|
+
en: `${!!productName ? (0, functions_1.translate)(locale || 'en', productName) : 'The item'} has been successfuly added to your cart!`,
|
|
123
|
+
fr: `${!!productName ? (0, functions_1.translate)(locale || 'fr', productName) : `L'item`} a bien été ajouté à votre panier!`
|
|
124
|
+
}, locale),
|
|
125
|
+
type: ISnackbarContext_1.SnackbarTypeEnum.SUCCESS,
|
|
126
|
+
isShown: true,
|
|
127
|
+
isCart: true
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
if (!!!addedValues.maxQtyItems) {
|
|
131
|
+
setCartSliderOpen(true);
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
return cart;
|
|
394
135
|
};
|
|
395
|
-
|
|
396
|
-
if (
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
if (process.env.NODE_ENV !== 'production')
|
|
406
|
-
console.log('`${api.org}__cart`', "".concat(api.org, "__cart"));
|
|
407
|
-
localStorage.removeItem("".concat(api.org, "__cart"));
|
|
408
|
-
setCartData(undefined);
|
|
409
|
-
return [3, 5];
|
|
410
|
-
case 1:
|
|
411
|
-
cartID = localStorage.getItem("".concat(api.org, "__cart"));
|
|
412
|
-
if (!!!cartID) return [3, 5];
|
|
413
|
-
_a.label = 2;
|
|
414
|
-
case 2:
|
|
415
|
-
_a.trys.push([2, 4, , 5]);
|
|
416
|
-
return [4, getCartFromDatabase(cartID)];
|
|
417
|
-
case 3:
|
|
418
|
-
cartFromDB = _a.sent();
|
|
419
|
-
if (!!cartFromDB && !!!cartFromDB.clerk_id) {
|
|
420
|
-
setCartData(cartFromDB);
|
|
421
|
-
}
|
|
422
|
-
return [3, 5];
|
|
423
|
-
case 4:
|
|
424
|
-
err_1 = _a.sent();
|
|
425
|
-
return [3, 5];
|
|
426
|
-
case 5: return [2, true];
|
|
427
|
-
}
|
|
428
|
-
});
|
|
429
|
-
});
|
|
136
|
+
const updateItem = async (newCart, items, saveToDatabase = true) => {
|
|
137
|
+
if (!!!api || !!!sdk)
|
|
138
|
+
throw new Error('SDK not initialised');
|
|
139
|
+
let updatedItemsCart = !!newCart ? newCart : !!cartData ? cartData : (0, Cart_1.getDefaultCart)(Cart_1.CartTypeEnum.WEB);
|
|
140
|
+
const itemsToUpdate = Array.isArray(items) ? items : [items];
|
|
141
|
+
const updatedValues = await (0, cart_1.updateCartItems)(updatedItemsCart, itemsToUpdate, sdk.products.getOneInventoryItem, api.org !== 'gr', _handleInventoryError);
|
|
142
|
+
if (!!saveToDatabase) {
|
|
143
|
+
updatedItemsCart = await saveCart({ items: updatedValues.updatedCart.items });
|
|
144
|
+
}
|
|
145
|
+
return updatedItemsCart;
|
|
430
146
|
};
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
if (!!!api || !!!sdk)
|
|
439
|
-
return [2, { error: { en: 'SDK not initialized', fr: 'SDK non initialisé' } }];
|
|
440
|
-
if (!!!cartData)
|
|
441
|
-
throw new Error("Can't pay an empty/undefined cart");
|
|
442
|
-
if (cartData.status >= Cart_1.CartStatusEnum.CHECKOUT_PAYMENT_SUCCESS)
|
|
443
|
-
throw new Error("Can't process a paid or higher status cart.");
|
|
444
|
-
return [4, fetch("".concat(api.api, "/cart/").concat(cartData.id, "/payment"), {
|
|
445
|
-
method: 'POST',
|
|
446
|
-
headers: {
|
|
447
|
-
Authorization: "Bearer ".concat(api.token),
|
|
448
|
-
'Content-Type': 'application/json',
|
|
449
|
-
'x-gng-ecomm-token': api.userToken
|
|
450
|
-
},
|
|
451
|
-
body: JSON.stringify(__assign({ customer_email: cartData.user_email, customer_name: cartData.billing_address ? cartData.billing_address.expedition_recipient_name : 'Anonyme', cartTotal: Number((cartData.total * 100).toFixed(0)) }, data))
|
|
452
|
-
})];
|
|
453
|
-
case 1:
|
|
454
|
-
request = _a.sent();
|
|
455
|
-
return [4, request.json()];
|
|
456
|
-
case 2:
|
|
457
|
-
responseData = _a.sent();
|
|
458
|
-
if (responseData.status != 200) {
|
|
459
|
-
return [2, { error: responseData.error }];
|
|
460
|
-
}
|
|
461
|
-
if (!!responseData.token) {
|
|
462
|
-
sdk.setUserToken(responseData.token);
|
|
463
|
-
}
|
|
464
|
-
return [2, { accessToken: responseData.data }];
|
|
465
|
-
}
|
|
466
|
-
});
|
|
467
|
-
});
|
|
147
|
+
const deleteItem = async (newCart, sku, saveToDatabase = true, onlyIfUpsellOf) => {
|
|
148
|
+
let cart = !!newCart ? newCart : !!cartData ? cartData : (0, Cart_1.getDefaultCart)(Cart_1.CartTypeEnum.WEB);
|
|
149
|
+
cart = (0, cart_1.deleteCartItem)(cart, Array.isArray(sku) ? sku : [sku], onlyIfUpsellOf);
|
|
150
|
+
if (!!saveToDatabase) {
|
|
151
|
+
cart = await saveCart({ items: cart.items });
|
|
152
|
+
}
|
|
153
|
+
return cart;
|
|
468
154
|
};
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
}
|
|
483
|
-
if (!!chosenPayment && chosenPayment != paidByValue) {
|
|
484
|
-
partial = __assign(__assign({}, partial), { shipping_payload: __assign(__assign({}, (cartData.shipping_payload || {})), { chosen_payment: chosenPayment }) });
|
|
155
|
+
const verifyCart = async () => {
|
|
156
|
+
if (!!!api || !!!cartData)
|
|
157
|
+
return false;
|
|
158
|
+
if (cartData.status >= Cart_1.CartStatusEnum.CHECKOUT_PAYMENT_SUCCESS)
|
|
159
|
+
throw new Error(`Can't process a paid or higher status cart.`);
|
|
160
|
+
if (!!cartData.id) {
|
|
161
|
+
try {
|
|
162
|
+
const request = await fetch(`${api.api}/cart/${cartData.id}/verify`, {
|
|
163
|
+
method: 'GET',
|
|
164
|
+
headers: {
|
|
165
|
+
Authorization: `Bearer ${api.token}`,
|
|
166
|
+
'Content-Type': 'application/json',
|
|
167
|
+
'x-gng-ecomm-token': api.userToken
|
|
485
168
|
}
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
case 4: return [2];
|
|
169
|
+
});
|
|
170
|
+
const responseData = (await request.json());
|
|
171
|
+
if (responseData.status != 200) {
|
|
172
|
+
throw 'Erreur lors de la requête des quotes.' + responseData.error;
|
|
173
|
+
}
|
|
174
|
+
const response = responseData.data;
|
|
175
|
+
setCartData(response.cart);
|
|
176
|
+
return response.actionsDone;
|
|
177
|
+
}
|
|
178
|
+
catch (error) {
|
|
179
|
+
console.log('error in verifyCart: ', error);
|
|
498
180
|
}
|
|
181
|
+
}
|
|
182
|
+
return false;
|
|
183
|
+
};
|
|
184
|
+
const uploadFileToOrder = async (newCart, file, propsName, saveToDatabase = true) => {
|
|
185
|
+
if (!!!api)
|
|
186
|
+
return;
|
|
187
|
+
let cart = !!newCart ? newCart : !!cartData ? cartData : (0, Cart_1.getDefaultCart)(Cart_1.CartTypeEnum.WEB);
|
|
188
|
+
if (!!!cart.id)
|
|
189
|
+
return {
|
|
190
|
+
cart: cart,
|
|
191
|
+
data: undefined,
|
|
192
|
+
error: "Couldn't convert cart data"
|
|
193
|
+
};
|
|
194
|
+
if (cart.status >= Cart_1.CartStatusEnum.CHECKOUT_PAYMENT_SUCCESS)
|
|
195
|
+
throw new Error(`Can't process a paid or higher status cart.`);
|
|
196
|
+
const base64 = await (0, functions_2.toBase64)(file);
|
|
197
|
+
if (typeof base64 !== 'string') {
|
|
198
|
+
return {
|
|
199
|
+
cart: cart,
|
|
200
|
+
data: undefined,
|
|
201
|
+
error: "Couldn't convert file to base64"
|
|
202
|
+
};
|
|
203
|
+
}
|
|
204
|
+
const request = await fetch(`${api.api}/cart/${cart.id}/uploadBase64`, {
|
|
205
|
+
method: 'PUT',
|
|
206
|
+
headers: {
|
|
207
|
+
Authorization: `Bearer ${api.token}`,
|
|
208
|
+
'Content-Type': 'application/json',
|
|
209
|
+
'x-gng-ecomm-token': api.userToken
|
|
210
|
+
},
|
|
211
|
+
body: JSON.stringify({
|
|
212
|
+
base64: base64
|
|
213
|
+
})
|
|
499
214
|
});
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
if (cartData.status >= Cart_1.CartStatusEnum.CHECKOUT_PAYMENT_SUCCESS)
|
|
511
|
-
throw new Error("Can't process a paid or higher status cart.");
|
|
512
|
-
_a.label = 1;
|
|
513
|
-
case 1:
|
|
514
|
-
_a.trys.push([1, 4, , 5]);
|
|
515
|
-
return [4, fetch("".concat(api.api, "/cart/").concat(cartData.id, "/saveOrder"), {
|
|
516
|
-
method: 'POST',
|
|
517
|
-
headers: {
|
|
518
|
-
authorization: "Bearer ".concat(api.token),
|
|
519
|
-
'Content-Type': 'application/json',
|
|
520
|
-
'x-gng-ecomm-token': api.userToken
|
|
521
|
-
},
|
|
522
|
-
body: JSON.stringify({ payment_payload: payment_payload })
|
|
523
|
-
})];
|
|
524
|
-
case 2:
|
|
525
|
-
fetchData = _a.sent();
|
|
526
|
-
return [4, fetchData.json()];
|
|
527
|
-
case 3:
|
|
528
|
-
response = (_a.sent());
|
|
529
|
-
if (response.status !== 200) {
|
|
530
|
-
return [2, 'error'];
|
|
215
|
+
const responseData = (await request.json());
|
|
216
|
+
if (responseData.status != 200) {
|
|
217
|
+
throw new Error("Impossible d'uploader le fichier" + responseData.error);
|
|
218
|
+
}
|
|
219
|
+
if (!!responseData.data) {
|
|
220
|
+
if (!!saveToDatabase) {
|
|
221
|
+
cart = await saveCart({
|
|
222
|
+
shipping_payload: cart.shipping_payload
|
|
223
|
+
? Object.assign(Object.assign({}, cart.shipping_payload), { [propsName]: responseData.data }) : {
|
|
224
|
+
[propsName]: responseData.data
|
|
531
225
|
}
|
|
532
|
-
|
|
533
|
-
case 4:
|
|
534
|
-
err_2 = _a.sent();
|
|
535
|
-
return [2, 'error'];
|
|
536
|
-
case 5: return [2];
|
|
226
|
+
});
|
|
537
227
|
}
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
switch (_a.label) {
|
|
544
|
-
case 0:
|
|
545
|
-
_a.trys.push([0, 2, , 3]);
|
|
546
|
-
return [4, saveCart({
|
|
547
|
-
subtotalWithoutPromotions: null,
|
|
548
|
-
cart_promo_applied: null,
|
|
549
|
-
cart_promos_applied: !!cart.cart_promos_applied
|
|
550
|
-
? cart.cart_promos_applied.filter(function (x) { return x.promo_code !== code; })
|
|
551
|
-
: null
|
|
552
|
-
})];
|
|
553
|
-
case 1:
|
|
554
|
-
_a.sent();
|
|
555
|
-
return [2, true];
|
|
556
|
-
case 2:
|
|
557
|
-
e_2 = _a.sent();
|
|
558
|
-
console.log('error on removing discountRule: ', e_2.toString());
|
|
559
|
-
return [2, false];
|
|
560
|
-
case 3: return [2];
|
|
228
|
+
else {
|
|
229
|
+
cart = Object.assign(Object.assign({}, cart), { shipping_payload: cart.shipping_payload
|
|
230
|
+
? Object.assign(Object.assign({}, cart.shipping_payload), { [propsName]: responseData.data }) : {
|
|
231
|
+
[propsName]: responseData.data
|
|
232
|
+
} });
|
|
561
233
|
}
|
|
562
|
-
}
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
cart = __assign(__assign({}, cart), { billing_address: newExpeditionInfo });
|
|
583
|
-
_a.label = 3;
|
|
584
|
-
case 3: return [2, cart];
|
|
234
|
+
}
|
|
235
|
+
return { cart: cart, data: responseData.data, error: undefined };
|
|
236
|
+
};
|
|
237
|
+
const emptyCart = async (removeCartIDFromLocalStorage = true) => {
|
|
238
|
+
if (!!!api || !!!sdk)
|
|
239
|
+
return false;
|
|
240
|
+
if (!!removeCartIDFromLocalStorage) {
|
|
241
|
+
if (process.env.NODE_ENV !== 'production')
|
|
242
|
+
console.log('`${api.org}__cart`', `${api.org}__cart`);
|
|
243
|
+
localStorage.removeItem(`${api.org}__cart`);
|
|
244
|
+
setCartData(undefined);
|
|
245
|
+
}
|
|
246
|
+
else {
|
|
247
|
+
const cartID = localStorage.getItem(`${api.org}__cart`);
|
|
248
|
+
if (!!cartID) {
|
|
249
|
+
try {
|
|
250
|
+
const cartFromDB = await getCartFromDatabase(cartID);
|
|
251
|
+
if (!!cartFromDB && !!!cartFromDB.clerk_id) {
|
|
252
|
+
setCartData(cartFromDB);
|
|
253
|
+
}
|
|
585
254
|
}
|
|
586
|
-
|
|
255
|
+
catch (err) { }
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
return true;
|
|
259
|
+
};
|
|
260
|
+
const handlePayment = async (data = {}) => {
|
|
261
|
+
if (!!!api || !!!sdk)
|
|
262
|
+
return { error: { en: 'SDK not initialized', fr: 'SDK non initialisé' } };
|
|
263
|
+
if (!!!cartData)
|
|
264
|
+
throw new Error("Can't pay an empty/undefined cart");
|
|
265
|
+
if (cartData.status >= Cart_1.CartStatusEnum.CHECKOUT_PAYMENT_SUCCESS)
|
|
266
|
+
throw new Error(`Can't process a paid or higher status cart.`);
|
|
267
|
+
const request = await fetch(`${api.api}/cart/${cartData.id}/payment`, {
|
|
268
|
+
method: 'POST',
|
|
269
|
+
headers: {
|
|
270
|
+
Authorization: `Bearer ${api.token}`,
|
|
271
|
+
'Content-Type': 'application/json',
|
|
272
|
+
'x-gng-ecomm-token': api.userToken
|
|
273
|
+
},
|
|
274
|
+
body: JSON.stringify(Object.assign({ customer_email: cartData.user_email, customer_name: cartData.billing_address ? cartData.billing_address.expedition_recipient_name : 'Anonyme', cartTotal: Number((cartData.total * 100).toFixed(0)) }, data))
|
|
587
275
|
});
|
|
276
|
+
const responseData = await request.json();
|
|
277
|
+
if (responseData.status != 200) {
|
|
278
|
+
return { error: responseData.error };
|
|
279
|
+
}
|
|
280
|
+
if (!!responseData.token) {
|
|
281
|
+
sdk.setUserToken(responseData.token);
|
|
282
|
+
}
|
|
283
|
+
return { accessToken: responseData.data };
|
|
588
284
|
};
|
|
589
|
-
|
|
590
|
-
if (
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
285
|
+
const setPaidBy = async (paidByValue, customPriceList, chosenPayment) => {
|
|
286
|
+
if (!!!cartData)
|
|
287
|
+
return;
|
|
288
|
+
let partial = { paid_by: paidByValue, id: cartData.id };
|
|
289
|
+
if (!!customPriceList) {
|
|
290
|
+
const customIncentiveInfo = (0, g2_1.getCustomIncentiveInfo)(customPriceList, cartData.discount_rules);
|
|
291
|
+
if (!!customIncentiveInfo) {
|
|
292
|
+
partial = Object.assign(Object.assign({}, partial), { discount_rules: customIncentiveInfo.updatedDiscountRules });
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
if (!!chosenPayment && chosenPayment != paidByValue) {
|
|
296
|
+
partial = Object.assign(Object.assign({}, partial), { shipping_payload: Object.assign(Object.assign({}, (cartData.shipping_payload || {})), { chosen_payment: chosenPayment }) });
|
|
297
|
+
}
|
|
298
|
+
try {
|
|
299
|
+
await saveCart(partial, false, undefined, false, true);
|
|
300
|
+
}
|
|
301
|
+
catch (e) {
|
|
302
|
+
console.log('error on saving cart with paid_by value: ', e);
|
|
303
|
+
}
|
|
304
|
+
};
|
|
305
|
+
const saveOrder = async (payment_payload) => {
|
|
306
|
+
if (!!!api)
|
|
307
|
+
throw new Error('SDK not initialised');
|
|
308
|
+
if (!!!cartData)
|
|
309
|
+
throw new Error("Can't pay an empty/undefined cart");
|
|
310
|
+
if (cartData.status >= Cart_1.CartStatusEnum.CHECKOUT_PAYMENT_SUCCESS)
|
|
311
|
+
throw new Error(`Can't process a paid or higher status cart.`);
|
|
312
|
+
try {
|
|
313
|
+
const fetchData = await fetch(`${api.api}/cart/${cartData.id}/saveOrder`, {
|
|
314
|
+
method: 'POST',
|
|
315
|
+
headers: {
|
|
316
|
+
authorization: `Bearer ${api.token}`,
|
|
317
|
+
'Content-Type': 'application/json',
|
|
318
|
+
'x-gng-ecomm-token': api.userToken
|
|
319
|
+
},
|
|
320
|
+
body: JSON.stringify({ payment_payload })
|
|
615
321
|
});
|
|
616
|
-
|
|
322
|
+
const response = (await fetchData.json());
|
|
323
|
+
if (response.status !== 200) {
|
|
324
|
+
return 'error';
|
|
325
|
+
}
|
|
326
|
+
return response.data;
|
|
327
|
+
}
|
|
328
|
+
catch (err) {
|
|
329
|
+
return 'error';
|
|
330
|
+
}
|
|
331
|
+
};
|
|
332
|
+
const removeDiscountRule = async (cart, code) => {
|
|
333
|
+
try {
|
|
334
|
+
await saveCart({
|
|
335
|
+
subtotalWithoutPromotions: null,
|
|
336
|
+
cart_promo_applied: null,
|
|
337
|
+
cart_promos_applied: !!cart.cart_promos_applied
|
|
338
|
+
? cart.cart_promos_applied.filter((x) => x.promo_code !== code)
|
|
339
|
+
: null
|
|
340
|
+
});
|
|
341
|
+
return true;
|
|
342
|
+
}
|
|
343
|
+
catch (e) {
|
|
344
|
+
console.log('error on removing discountRule: ', e.toString());
|
|
345
|
+
return false;
|
|
346
|
+
}
|
|
347
|
+
};
|
|
348
|
+
const updateBillingAddress = async (newCart, expeditionInfo, saveToDatabase = true, setCAIfNoCountry) => {
|
|
349
|
+
let cart = !!newCart ? newCart : !!cartData ? cartData : (0, Cart_1.getDefaultCart)(Cart_1.CartTypeEnum.WEB);
|
|
350
|
+
let newExpeditionInfo = expeditionInfo;
|
|
351
|
+
if (!!setCAIfNoCountry && !!expeditionInfo && !!!expeditionInfo.address.country) {
|
|
352
|
+
newExpeditionInfo = Object.assign(Object.assign({}, expeditionInfo), { address: Object.assign(Object.assign({}, expeditionInfo.address), { country: 'CA' }) });
|
|
353
|
+
}
|
|
354
|
+
if (!!saveToDatabase) {
|
|
355
|
+
cart = await saveCart({ billing_address: newExpeditionInfo });
|
|
356
|
+
}
|
|
357
|
+
else {
|
|
358
|
+
cart = Object.assign(Object.assign({}, cart), { billing_address: newExpeditionInfo });
|
|
359
|
+
}
|
|
360
|
+
return cart;
|
|
617
361
|
};
|
|
618
|
-
|
|
362
|
+
const updateShippingAddress = async (newCart, isPickupAtStore, expeditionInfo, saveToDatabase = true, setCAIfNoCountry) => {
|
|
363
|
+
let cart = !!newCart ? newCart : !!cartData ? cartData : (0, Cart_1.getDefaultCart)(Cart_1.CartTypeEnum.WEB);
|
|
364
|
+
let newExpeditionInfo = expeditionInfo;
|
|
365
|
+
if (!!setCAIfNoCountry && !!expeditionInfo && !!!expeditionInfo.address.country) {
|
|
366
|
+
newExpeditionInfo = Object.assign(Object.assign({}, expeditionInfo), { address: Object.assign(Object.assign({}, expeditionInfo.address), { country: 'CA' }) });
|
|
367
|
+
}
|
|
368
|
+
if (!!saveToDatabase) {
|
|
369
|
+
cart = await saveCart({
|
|
370
|
+
is_pickup: isPickupAtStore,
|
|
371
|
+
shipping_address: newExpeditionInfo,
|
|
372
|
+
shipping_selected: undefined
|
|
373
|
+
});
|
|
374
|
+
}
|
|
375
|
+
else {
|
|
376
|
+
cart = Object.assign(Object.assign({}, cart), { is_pickup: isPickupAtStore, shipping_address: newExpeditionInfo, shipping_selected: undefined });
|
|
377
|
+
}
|
|
378
|
+
return cart;
|
|
379
|
+
};
|
|
380
|
+
const getIsSameBillingThenShipping = () => {
|
|
619
381
|
if (!!!cartData)
|
|
620
382
|
return false;
|
|
621
383
|
if (!!!cartData.billing_address && !!!cartData.shipping_address)
|
|
@@ -626,355 +388,253 @@ var CartContextProvider = function (_a) {
|
|
|
626
388
|
(0, functions_1.string_to_slug)(cartData.shipping_address.address.postal_code) &&
|
|
627
389
|
(0, functions_1.string_to_slug)(cartData.billing_address.address.line1) === (0, functions_1.string_to_slug)(cartData.shipping_address.address.line1));
|
|
628
390
|
};
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
|
|
391
|
+
const setShippingPayload = async (newCart, payload, saveToDatabase = true) => {
|
|
392
|
+
let cart = !!newCart ? newCart : !!cartData ? cartData : (0, Cart_1.getDefaultCart)(Cart_1.CartTypeEnum.WEB);
|
|
393
|
+
if (!!saveToDatabase) {
|
|
394
|
+
cart = await saveCart({ shipping_payload: payload });
|
|
395
|
+
}
|
|
396
|
+
else {
|
|
397
|
+
cart = Object.assign(Object.assign({}, cart), { shipping_payload: payload });
|
|
398
|
+
}
|
|
399
|
+
return cart;
|
|
400
|
+
};
|
|
401
|
+
const getShippingQuotes = async () => {
|
|
402
|
+
if (!!!api || !!!sdk)
|
|
403
|
+
return;
|
|
404
|
+
if (!!!cartData)
|
|
405
|
+
throw new Error("Can't get shipping quotes for an empty/undefined cart");
|
|
406
|
+
if (cartData.status >= Cart_1.CartStatusEnum.CHECKOUT_PAYMENT_SUCCESS)
|
|
407
|
+
throw new Error(`Can't process a paid or higher status cart.`);
|
|
408
|
+
const request = await fetch(`${api.api}/cart/getShippingQuotes`, {
|
|
409
|
+
method: 'POST',
|
|
410
|
+
headers: {
|
|
411
|
+
Authorization: `Bearer ${api.token}`,
|
|
412
|
+
'x-gng-ecomm-token': api.userToken
|
|
413
|
+
},
|
|
414
|
+
body: cartData.id
|
|
648
415
|
});
|
|
416
|
+
const responseData = (await request.json());
|
|
417
|
+
if (responseData.status != 200 || !!responseData.error) {
|
|
418
|
+
throw 'Erreur lors de la requête des quotes.' + responseData.error;
|
|
419
|
+
}
|
|
420
|
+
if (responseData.token) {
|
|
421
|
+
sdk.setUserToken(responseData.token);
|
|
422
|
+
}
|
|
423
|
+
return responseData.data.shippingQuotes;
|
|
649
424
|
};
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
headers: {
|
|
664
|
-
Authorization: "Bearer ".concat(api.token),
|
|
665
|
-
'x-gng-ecomm-token': api.userToken
|
|
666
|
-
},
|
|
667
|
-
body: cartData.id
|
|
668
|
-
})];
|
|
669
|
-
case 1:
|
|
670
|
-
request = _a.sent();
|
|
671
|
-
return [4, request.json()];
|
|
672
|
-
case 2:
|
|
673
|
-
responseData = (_a.sent());
|
|
674
|
-
if (responseData.status != 200 || !!responseData.error) {
|
|
675
|
-
throw 'Erreur lors de la requête des quotes.' + responseData.error;
|
|
676
|
-
}
|
|
677
|
-
if (responseData.token) {
|
|
678
|
-
sdk.setUserToken(responseData.token);
|
|
679
|
-
}
|
|
680
|
-
return [2, responseData.data.shippingQuotes];
|
|
681
|
-
}
|
|
425
|
+
const selectShippingQuote = async (quote) => {
|
|
426
|
+
if (!!!api || !!!sdk)
|
|
427
|
+
return;
|
|
428
|
+
if (!!!cartData)
|
|
429
|
+
throw new Error("Can't select shipping quote for an empty/undefined cart");
|
|
430
|
+
const request = await fetch(`${api.api}/cart/${cartData.id}/setSelectedShippingMethod`, {
|
|
431
|
+
method: 'POST',
|
|
432
|
+
headers: {
|
|
433
|
+
Authorization: `Bearer ${api.token}`,
|
|
434
|
+
'Content-Type': 'application/json',
|
|
435
|
+
'x-gng-ecomm-token': api.userToken
|
|
436
|
+
},
|
|
437
|
+
body: JSON.stringify(quote)
|
|
682
438
|
});
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
|
|
712
|
-
}
|
|
713
|
-
updatedCart = responseData.data;
|
|
714
|
-
setCartData(updatedCart);
|
|
715
|
-
return [2, updatedCart];
|
|
439
|
+
const responseData = await request.json();
|
|
440
|
+
if (responseData.status != 200) {
|
|
441
|
+
throw new Error('Impossible de sélectionner la shipping quote ' + responseData.error);
|
|
442
|
+
}
|
|
443
|
+
if (responseData.token) {
|
|
444
|
+
sdk.setUserToken(responseData.token);
|
|
445
|
+
}
|
|
446
|
+
const updatedCart = responseData.data;
|
|
447
|
+
setCartData(updatedCart);
|
|
448
|
+
return updatedCart;
|
|
449
|
+
};
|
|
450
|
+
const setPromoCode = async (promo_code) => {
|
|
451
|
+
try {
|
|
452
|
+
await saveCart({}, true, promo_code);
|
|
453
|
+
}
|
|
454
|
+
catch (error) {
|
|
455
|
+
if (process.env.NODE_ENV === 'development')
|
|
456
|
+
console.log(`error on SDK while applying promo on cart`, error);
|
|
457
|
+
}
|
|
458
|
+
};
|
|
459
|
+
const getCartFromDatabase = async (cardID) => {
|
|
460
|
+
if (!!!api || !!!sdk)
|
|
461
|
+
return;
|
|
462
|
+
const request = await fetch(`${api.api}/cart/${cardID}`, {
|
|
463
|
+
method: 'GET',
|
|
464
|
+
headers: {
|
|
465
|
+
Authorization: `Bearer ${api.token}`,
|
|
466
|
+
'Content-Type': 'application/json',
|
|
467
|
+
'x-gng-ecomm-token': api.userToken
|
|
716
468
|
}
|
|
717
469
|
});
|
|
718
|
-
|
|
719
|
-
|
|
720
|
-
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
|
|
470
|
+
const responseData = await request.json();
|
|
471
|
+
if (responseData.status !== 200) {
|
|
472
|
+
throw new Error('Impossible de fetch le cart: ' + responseData.error);
|
|
473
|
+
}
|
|
474
|
+
if (responseData.token) {
|
|
475
|
+
sdk.setUserToken(responseData.token);
|
|
476
|
+
}
|
|
477
|
+
return responseData.data;
|
|
478
|
+
};
|
|
479
|
+
const saveCart = async (cart, saveToDatabase = true, promo_code, onlyNewCart = false, partialOnly = false) => {
|
|
480
|
+
let newCartData = Object.assign(Object.assign({}, (!!cartData && !!!onlyNewCart ? cartData : (0, Cart_1.getDefaultCart)(Cart_1.CartTypeEnum.WEB))), cart);
|
|
481
|
+
if (!!!newCartData)
|
|
482
|
+
throw new Error("Can't save an empty/undefined cart");
|
|
483
|
+
if (newCartData.status >= Cart_1.CartStatusEnum.CHECKOUT_PAYMENT_SUCCESS)
|
|
484
|
+
throw new Error(`Can't process a paid or higher status cart.`);
|
|
485
|
+
if (!!api) {
|
|
486
|
+
const response = await fetch(`${api.api}/cart`, {
|
|
487
|
+
method: 'POST',
|
|
488
|
+
headers: {
|
|
489
|
+
Authorization: `Bearer ${api.token}`,
|
|
490
|
+
'Content-Type': 'application/json',
|
|
491
|
+
'x-gng-ecomm-token': api.userToken
|
|
492
|
+
},
|
|
493
|
+
body: JSON.stringify({ cartData: newCartData, currency, locale, promo_code, saveToDatabase, partialOnly })
|
|
494
|
+
});
|
|
495
|
+
const responseData = await response.json();
|
|
496
|
+
if (responseData.status != 200 || !!responseData.error) {
|
|
497
|
+
setCartErrors([
|
|
498
|
+
typeof responseData.error === 'string'
|
|
499
|
+
? responseData.error
|
|
500
|
+
: (0, functions_1.getStringByLang)(responseData.error, locale)
|
|
501
|
+
]);
|
|
735
502
|
}
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
|
|
741
|
-
switch (_a.label) {
|
|
742
|
-
case 0:
|
|
743
|
-
if (!!!api || !!!sdk)
|
|
744
|
-
return [2];
|
|
745
|
-
return [4, fetch("".concat(api.api, "/cart/").concat(cardID), {
|
|
746
|
-
method: 'GET',
|
|
747
|
-
headers: {
|
|
748
|
-
Authorization: "Bearer ".concat(api.token),
|
|
749
|
-
'Content-Type': 'application/json',
|
|
750
|
-
'x-gng-ecomm-token': api.userToken
|
|
751
|
-
}
|
|
752
|
-
})];
|
|
753
|
-
case 1:
|
|
754
|
-
request = _a.sent();
|
|
755
|
-
return [4, request.json()];
|
|
756
|
-
case 2:
|
|
757
|
-
responseData = _a.sent();
|
|
758
|
-
if (responseData.status !== 200) {
|
|
759
|
-
throw new Error('Impossible de fetch le cart: ' + responseData.error);
|
|
760
|
-
}
|
|
761
|
-
if (responseData.token) {
|
|
762
|
-
sdk.setUserToken(responseData.token);
|
|
503
|
+
else {
|
|
504
|
+
if (!!responseData.data) {
|
|
505
|
+
const cartIDInLocalStorage = localStorage.getItem(`${api.org}__cart`);
|
|
506
|
+
if (!!responseData.data.id && (!!!cartIDInLocalStorage || cartIDInLocalStorage !== responseData.data.id)) {
|
|
507
|
+
localStorage.setItem(`${api.org}__cart`, responseData.data.id);
|
|
763
508
|
}
|
|
764
|
-
|
|
765
|
-
|
|
766
|
-
|
|
767
|
-
}); };
|
|
768
|
-
var saveCart = function (cart, saveToDatabase, promo_code, onlyNewCart, partialOnly) {
|
|
769
|
-
if (saveToDatabase === void 0) { saveToDatabase = true; }
|
|
770
|
-
if (onlyNewCart === void 0) { onlyNewCart = false; }
|
|
771
|
-
if (partialOnly === void 0) { partialOnly = false; }
|
|
772
|
-
return __awaiter(void 0, void 0, void 0, function () {
|
|
773
|
-
var newCartData, response, responseData, cartIDInLocalStorage;
|
|
774
|
-
return __generator(this, function (_a) {
|
|
775
|
-
switch (_a.label) {
|
|
776
|
-
case 0:
|
|
777
|
-
newCartData = __assign(__assign({}, (!!cartData && !!!onlyNewCart ? cartData : (0, Cart_1.getDefaultCart)(Cart_1.CartTypeEnum.WEB))), cart);
|
|
778
|
-
if (!!!newCartData)
|
|
779
|
-
throw new Error("Can't save an empty/undefined cart");
|
|
780
|
-
if (newCartData.status >= Cart_1.CartStatusEnum.CHECKOUT_PAYMENT_SUCCESS)
|
|
781
|
-
throw new Error("Can't process a paid or higher status cart.");
|
|
782
|
-
if (!!!api) return [3, 3];
|
|
783
|
-
return [4, fetch("".concat(api.api, "/cart"), {
|
|
784
|
-
method: 'POST',
|
|
785
|
-
headers: {
|
|
786
|
-
Authorization: "Bearer ".concat(api.token),
|
|
787
|
-
'Content-Type': 'application/json',
|
|
788
|
-
'x-gng-ecomm-token': api.userToken
|
|
789
|
-
},
|
|
790
|
-
body: JSON.stringify({ cartData: newCartData, currency: currency, locale: locale, promo_code: promo_code, saveToDatabase: saveToDatabase, partialOnly: partialOnly })
|
|
791
|
-
})];
|
|
792
|
-
case 1:
|
|
793
|
-
response = _a.sent();
|
|
794
|
-
return [4, response.json()];
|
|
795
|
-
case 2:
|
|
796
|
-
responseData = _a.sent();
|
|
797
|
-
if (responseData.status != 200 || !!responseData.error) {
|
|
798
|
-
setCartErrors([
|
|
799
|
-
typeof responseData.error === 'string'
|
|
800
|
-
? responseData.error
|
|
801
|
-
: (0, functions_1.getStringByLang)(responseData.error, locale)
|
|
802
|
-
]);
|
|
803
|
-
}
|
|
804
|
-
else {
|
|
805
|
-
if (!!responseData.data) {
|
|
806
|
-
cartIDInLocalStorage = localStorage.getItem("".concat(api.org, "__cart"));
|
|
807
|
-
if (!!responseData.data.id && (!!!cartIDInLocalStorage || cartIDInLocalStorage !== responseData.data.id)) {
|
|
808
|
-
localStorage.setItem("".concat(api.org, "__cart"), responseData.data.id);
|
|
809
|
-
}
|
|
810
|
-
newCartData = responseData.data;
|
|
811
|
-
setCartData(newCartData);
|
|
812
|
-
setCartErrors([]);
|
|
813
|
-
}
|
|
814
|
-
}
|
|
815
|
-
return [3, 4];
|
|
816
|
-
case 3:
|
|
817
|
-
setCartData(newCartData);
|
|
818
|
-
_a.label = 4;
|
|
819
|
-
case 4: return [2, newCartData];
|
|
509
|
+
newCartData = responseData.data;
|
|
510
|
+
setCartData(newCartData);
|
|
511
|
+
setCartErrors([]);
|
|
820
512
|
}
|
|
821
|
-
}
|
|
822
|
-
}
|
|
513
|
+
}
|
|
514
|
+
}
|
|
515
|
+
else {
|
|
516
|
+
setCartData(newCartData);
|
|
517
|
+
}
|
|
518
|
+
return newCartData;
|
|
823
519
|
};
|
|
824
|
-
|
|
825
|
-
|
|
826
|
-
|
|
827
|
-
|
|
828
|
-
|
|
829
|
-
|
|
830
|
-
|
|
831
|
-
|
|
832
|
-
|
|
833
|
-
|
|
834
|
-
|
|
835
|
-
headers: {
|
|
836
|
-
Authorization: "Bearer ".concat(api.token),
|
|
837
|
-
'Content-Type': 'application/json',
|
|
838
|
-
'x-gng-ecomm-token': api.userToken
|
|
839
|
-
}
|
|
840
|
-
})];
|
|
841
|
-
case 1:
|
|
842
|
-
request = _a.sent();
|
|
843
|
-
return [4, request.json()];
|
|
844
|
-
case 2:
|
|
845
|
-
responseData = _a.sent();
|
|
846
|
-
if (responseData.status !== 200) {
|
|
847
|
-
throw new Error('Impossible de fetch les promos associé: ' + responseData.error);
|
|
848
|
-
}
|
|
849
|
-
return [2, responseData.data];
|
|
520
|
+
const getApplicablePromos = async (forceShipping) => {
|
|
521
|
+
if (!!!api || !!!sdk)
|
|
522
|
+
return;
|
|
523
|
+
if (!!!cartData)
|
|
524
|
+
throw new Error("Can't get promos if no cart data");
|
|
525
|
+
const request = await fetch(`${api.api}/cart/${cartData.id}/getApplicablePromosWithShipping`, {
|
|
526
|
+
method: 'GET',
|
|
527
|
+
headers: {
|
|
528
|
+
Authorization: `Bearer ${api.token}`,
|
|
529
|
+
'Content-Type': 'application/json',
|
|
530
|
+
'x-gng-ecomm-token': api.userToken
|
|
850
531
|
}
|
|
851
532
|
});
|
|
852
|
-
|
|
853
|
-
|
|
854
|
-
|
|
855
|
-
|
|
856
|
-
|
|
857
|
-
|
|
858
|
-
|
|
859
|
-
|
|
860
|
-
|
|
861
|
-
|
|
862
|
-
|
|
863
|
-
|
|
864
|
-
|
|
865
|
-
|
|
866
|
-
|
|
867
|
-
|
|
868
|
-
|
|
869
|
-
|
|
870
|
-
|
|
871
|
-
|
|
872
|
-
|
|
873
|
-
case 1:
|
|
874
|
-
request = _a.sent();
|
|
875
|
-
return [4, request.json()];
|
|
876
|
-
case 2:
|
|
877
|
-
responseData = _a.sent();
|
|
878
|
-
if (responseData.status !== 200) {
|
|
879
|
-
throw new Error("Can't apply promise to purchase to cart: " + responseData.error);
|
|
880
|
-
}
|
|
881
|
-
return [2, responseData.data];
|
|
882
|
-
}
|
|
533
|
+
const responseData = await request.json();
|
|
534
|
+
if (responseData.status !== 200) {
|
|
535
|
+
throw new Error('Impossible de fetch les promos associé: ' + responseData.error);
|
|
536
|
+
}
|
|
537
|
+
return responseData.data;
|
|
538
|
+
};
|
|
539
|
+
const canBePaidWithPA = async (userId) => {
|
|
540
|
+
if (!!!api)
|
|
541
|
+
return;
|
|
542
|
+
if (!!!cartData)
|
|
543
|
+
throw new Error("Can't check if cart is payable with PA if cartData is undefined.");
|
|
544
|
+
if (!!!userId)
|
|
545
|
+
throw new Error("Can't check if cart is payable with PA without userId");
|
|
546
|
+
const request = await fetch(`${api.api}/cart/${cartData.id}/canBePaidWithPA`, {
|
|
547
|
+
method: 'POST',
|
|
548
|
+
headers: {
|
|
549
|
+
Authorization: `Bearer ${api.token}`,
|
|
550
|
+
'Content-Type': 'application/json',
|
|
551
|
+
'x-gng-ecomm-token': api.userToken
|
|
552
|
+
},
|
|
553
|
+
body: JSON.stringify({ userId })
|
|
883
554
|
});
|
|
884
|
-
|
|
885
|
-
|
|
555
|
+
const responseData = await request.json();
|
|
556
|
+
if (responseData.status !== 200) {
|
|
557
|
+
throw new Error("Can't apply promise to purchase to cart: " + responseData.error);
|
|
558
|
+
}
|
|
559
|
+
return responseData.data;
|
|
560
|
+
};
|
|
561
|
+
const getPaymentIncentiveDiscountAmount = (skipCheckForRuleFields) => {
|
|
886
562
|
if (!!!cartData)
|
|
887
563
|
return;
|
|
888
564
|
if (!!cartData.promo_after_taxes_amount)
|
|
889
565
|
return cartData.promo_after_taxes_amount;
|
|
890
|
-
|
|
566
|
+
let couldApplyIncentive = (0, discount_1.checkIfCouldApplyIncentivePromo)(cartData, skipCheckForRuleFields);
|
|
891
567
|
if (!!!couldApplyIncentive)
|
|
892
568
|
return;
|
|
893
|
-
|
|
569
|
+
let incentiveCalculatedAmount = (0, discount_1.getAfterTaxesPromosTotalAmount)(cartData, true);
|
|
894
570
|
return incentiveCalculatedAmount;
|
|
895
571
|
};
|
|
896
|
-
(0, react_1.useEffect)(
|
|
572
|
+
(0, react_1.useEffect)(() => {
|
|
897
573
|
if (!!!locale || !!!cartData || cartData.locale === locale)
|
|
898
574
|
return;
|
|
899
|
-
saveCart({ locale
|
|
575
|
+
saveCart({ locale });
|
|
900
576
|
}, [locale]);
|
|
901
|
-
(0, react_1.useEffect)(
|
|
577
|
+
(0, react_1.useEffect)(() => {
|
|
902
578
|
if (!!!sdk || !userLoaded)
|
|
903
579
|
return;
|
|
904
|
-
|
|
905
|
-
|
|
906
|
-
|
|
907
|
-
|
|
908
|
-
|
|
909
|
-
|
|
910
|
-
|
|
911
|
-
customerEmail = !!cartData.customer_info ? cartData.customer_info.customer_default_email : '';
|
|
912
|
-
customerDoc = !!cartData.customer_info ? cartData.customer_info.pro_proof_doc : '';
|
|
913
|
-
if (!(!!customerId || !!customerEmail || !!customerDoc)) return [3, 2];
|
|
914
|
-
return [4, emptyCart()];
|
|
915
|
-
case 1:
|
|
916
|
-
_a.sent();
|
|
917
|
-
_a.label = 2;
|
|
918
|
-
case 2: return [2];
|
|
580
|
+
const checkCartCustomerValid = async () => {
|
|
581
|
+
if (!isUserLoggedIn && !!cartData) {
|
|
582
|
+
const customerId = cartData.customer_id;
|
|
583
|
+
const customerEmail = !!cartData.customer_info ? cartData.customer_info.customer_default_email : '';
|
|
584
|
+
const customerDoc = !!cartData.customer_info ? cartData.customer_info.pro_proof_doc : '';
|
|
585
|
+
if (!!customerId || !!customerEmail || !!customerDoc) {
|
|
586
|
+
await emptyCart();
|
|
919
587
|
}
|
|
920
|
-
}
|
|
921
|
-
}
|
|
588
|
+
}
|
|
589
|
+
};
|
|
922
590
|
checkCartCustomerValid();
|
|
923
591
|
}, [sdk, isUserLoggedIn, userLoaded, cartData]);
|
|
924
|
-
(0, react_1.useEffect)(
|
|
592
|
+
(0, react_1.useEffect)(() => {
|
|
925
593
|
if (!!!api)
|
|
926
594
|
return;
|
|
927
|
-
|
|
928
|
-
|
|
929
|
-
|
|
930
|
-
|
|
931
|
-
|
|
932
|
-
|
|
933
|
-
cartData = _a.sent();
|
|
934
|
-
if (!!!cartData)
|
|
935
|
-
return [2];
|
|
936
|
-
setCartData(cartData);
|
|
937
|
-
return [2];
|
|
938
|
-
}
|
|
939
|
-
});
|
|
940
|
-
}); };
|
|
595
|
+
const getContent = async () => {
|
|
596
|
+
const cartData = await initCart();
|
|
597
|
+
if (!!!cartData)
|
|
598
|
+
return;
|
|
599
|
+
setCartData(cartData);
|
|
600
|
+
};
|
|
941
601
|
getContent();
|
|
942
602
|
}, [sdk]);
|
|
943
|
-
return ((0, jsx_runtime_1.jsx)(_1.default.Provider,
|
|
944
|
-
loading
|
|
945
|
-
cartData
|
|
946
|
-
cartErrors
|
|
947
|
-
cartSliderOpen
|
|
948
|
-
isGuest
|
|
949
|
-
setIsGuest
|
|
950
|
-
setCartErrors
|
|
951
|
-
setCartData
|
|
952
|
-
saveCart
|
|
603
|
+
return ((0, jsx_runtime_1.jsx)(_1.default.Provider, Object.assign({ value: {
|
|
604
|
+
loading,
|
|
605
|
+
cartData,
|
|
606
|
+
cartErrors,
|
|
607
|
+
cartSliderOpen,
|
|
608
|
+
isGuest,
|
|
609
|
+
setIsGuest,
|
|
610
|
+
setCartErrors,
|
|
611
|
+
setCartData,
|
|
612
|
+
saveCart,
|
|
953
613
|
setCartLoading: setLoading,
|
|
954
|
-
getCartFromDatabase
|
|
955
|
-
handlePayment
|
|
956
|
-
setCartSliderOpen
|
|
957
|
-
addItem
|
|
958
|
-
deleteItem
|
|
959
|
-
updateItem
|
|
960
|
-
verifyCart
|
|
961
|
-
uploadFileToOrder
|
|
962
|
-
updateEmail
|
|
963
|
-
updateDefaultCustomer
|
|
964
|
-
emptyCart
|
|
965
|
-
saveOrder
|
|
966
|
-
updateShippingAddress
|
|
967
|
-
updateBillingAddress
|
|
968
|
-
getIsSameBillingThenShipping
|
|
969
|
-
setShippingPayload
|
|
970
|
-
removeDiscountRule
|
|
971
|
-
getShippingQuotes
|
|
972
|
-
selectShippingQuote
|
|
973
|
-
setPromoCode
|
|
974
|
-
getApplicablePromos
|
|
975
|
-
canBePaidWithPA
|
|
976
|
-
getPaymentIncentiveDiscountAmount
|
|
977
|
-
setPaidBy
|
|
614
|
+
getCartFromDatabase,
|
|
615
|
+
handlePayment,
|
|
616
|
+
setCartSliderOpen,
|
|
617
|
+
addItem,
|
|
618
|
+
deleteItem,
|
|
619
|
+
updateItem,
|
|
620
|
+
verifyCart,
|
|
621
|
+
uploadFileToOrder,
|
|
622
|
+
updateEmail,
|
|
623
|
+
updateDefaultCustomer,
|
|
624
|
+
emptyCart,
|
|
625
|
+
saveOrder,
|
|
626
|
+
updateShippingAddress,
|
|
627
|
+
updateBillingAddress,
|
|
628
|
+
getIsSameBillingThenShipping,
|
|
629
|
+
setShippingPayload,
|
|
630
|
+
removeDiscountRule,
|
|
631
|
+
getShippingQuotes,
|
|
632
|
+
selectShippingQuote,
|
|
633
|
+
setPromoCode,
|
|
634
|
+
getApplicablePromos,
|
|
635
|
+
canBePaidWithPA,
|
|
636
|
+
getPaymentIncentiveDiscountAmount,
|
|
637
|
+
setPaidBy
|
|
978
638
|
} }, { children: children })));
|
|
979
639
|
};
|
|
980
640
|
exports.default = CartContextProvider;
|