addio-ecomm-sdk 1.3.27 → 1.3.28

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.
Files changed (100) hide show
  1. package/.vscode/settings.json +34 -34
  2. package/README.md +79 -79
  3. package/dist/index.d.ts +201 -201
  4. package/dist/index.js +1795 -1795
  5. package/dist/lib/constants/components/CreditCardInput.d.ts +11 -11
  6. package/dist/lib/constants/components/CreditCardInput.js +79 -79
  7. package/dist/lib/constants/components/Snackbar.d.ts +11 -11
  8. package/dist/lib/constants/components/Snackbar.js +39 -39
  9. package/dist/lib/constants/contexts/CartContext/CartContextProvider.d.ts +7 -7
  10. package/dist/lib/constants/contexts/CartContext/CartContextProvider.js +973 -973
  11. package/dist/lib/constants/contexts/CartContext/index.d.ts +79 -79
  12. package/dist/lib/constants/contexts/CartContext/index.js +127 -127
  13. package/dist/lib/constants/contexts/DataContext/DataContextProvider.d.ts +15 -15
  14. package/dist/lib/constants/contexts/DataContext/DataContextProvider.js +299 -299
  15. package/dist/lib/constants/contexts/DataContext/index.d.ts +40 -40
  16. package/dist/lib/constants/contexts/DataContext/index.js +66 -66
  17. package/dist/lib/constants/contexts/ModalContext/ModalContextProvider.d.ts +7 -7
  18. package/dist/lib/constants/contexts/ModalContext/ModalContextProvider.js +76 -76
  19. package/dist/lib/constants/contexts/ModalContext/index.d.ts +14 -14
  20. package/dist/lib/constants/contexts/ModalContext/index.js +18 -18
  21. package/dist/lib/constants/contexts/SDKContext/SDKProvider.d.ts +8 -8
  22. package/dist/lib/constants/contexts/SDKContext/SDKProvider.js +79 -79
  23. package/dist/lib/constants/contexts/SDKContext/index.d.ts +4 -4
  24. package/dist/lib/constants/contexts/SDKContext/index.js +4 -4
  25. package/dist/lib/constants/contexts/SnackbarContext/SnackbarContext.d.ts +4 -4
  26. package/dist/lib/constants/contexts/SnackbarContext/SnackbarContext.js +6 -6
  27. package/dist/lib/constants/contexts/SnackbarContext/SnackbarContextProvider.d.ts +12 -12
  28. package/dist/lib/constants/contexts/SnackbarContext/SnackbarContextProvider.js +52 -52
  29. package/dist/lib/constants/contexts/SnackbarContext/interfaces/ISnackbarContext.d.ts +17 -17
  30. package/dist/lib/constants/contexts/SnackbarContext/interfaces/ISnackbarContext.js +21 -21
  31. package/dist/lib/constants/contexts/StockNotifContext/StockNotifContextProvider.d.ts +7 -7
  32. package/dist/lib/constants/contexts/StockNotifContext/StockNotifContextProvider.js +179 -179
  33. package/dist/lib/constants/contexts/StockNotifContext/index.d.ts +10 -10
  34. package/dist/lib/constants/contexts/StockNotifContext/index.js +10 -10
  35. package/dist/lib/constants/contexts/UserContext/UserContextProvider.d.ts +5 -5
  36. package/dist/lib/constants/contexts/UserContext/UserContextProvider.js +470 -470
  37. package/dist/lib/constants/contexts/UserContext/index.d.ts +54 -54
  38. package/dist/lib/constants/contexts/UserContext/index.js +82 -82
  39. package/dist/lib/constants/contexts/WishlistContext/WishlistContextProvider.d.ts +6 -6
  40. package/dist/lib/constants/contexts/WishlistContext/WishlistContextProvider.js +327 -327
  41. package/dist/lib/constants/contexts/WishlistContext/index.d.ts +12 -12
  42. package/dist/lib/constants/contexts/WishlistContext/index.js +12 -12
  43. package/dist/lib/constants/hooks/useCart.d.ts +2 -2
  44. package/dist/lib/constants/hooks/useCart.js +11 -11
  45. package/dist/lib/constants/hooks/useData.d.ts +2 -2
  46. package/dist/lib/constants/hooks/useData.js +11 -11
  47. package/dist/lib/constants/hooks/useModal.d.ts +2 -2
  48. package/dist/lib/constants/hooks/useModal.js +11 -11
  49. package/dist/lib/constants/hooks/useSDK.d.ts +2 -2
  50. package/dist/lib/constants/hooks/useSDK.js +11 -11
  51. package/dist/lib/constants/hooks/useSnackbar.d.ts +2 -2
  52. package/dist/lib/constants/hooks/useSnackbar.js +11 -11
  53. package/dist/lib/constants/hooks/useStockNotif.d.ts +2 -2
  54. package/dist/lib/constants/hooks/useStockNotif.js +11 -11
  55. package/dist/lib/constants/hooks/useUser.d.ts +2 -2
  56. package/dist/lib/constants/hooks/useUser.js +11 -11
  57. package/dist/lib/constants/hooks/useWishlist.d.ts +2 -2
  58. package/dist/lib/constants/hooks/useWishlist.js +11 -11
  59. package/dist/lib/models/image/index.d.ts +6 -6
  60. package/dist/lib/models/image/index.js +15 -15
  61. package/dist/lib/models/stockNotification/index.d.ts +13 -13
  62. package/dist/lib/models/stockNotification/index.js +130 -130
  63. package/dist/lib/models/wishlist/index.d.ts +14 -14
  64. package/dist/lib/models/wishlist/index.js +155 -155
  65. package/dist/utils/StripeErrors.d.ts +24 -24
  66. package/dist/utils/StripeErrors.js +55 -55
  67. package/dist/utils/algolia.d.ts +3 -3
  68. package/dist/utils/algolia.js +81 -81
  69. package/dist/utils/analytics.d.ts +71 -71
  70. package/dist/utils/analytics.js +257 -257
  71. package/dist/utils/cart.d.ts +3 -3
  72. package/dist/utils/cart.js +66 -66
  73. package/dist/utils/contentful.d.ts +10 -10
  74. package/dist/utils/contentful.js +136 -136
  75. package/dist/utils/functions.d.ts +21 -21
  76. package/dist/utils/functions.js +195 -195
  77. package/dist/utils/getSDK.d.ts +4 -4
  78. package/dist/utils/getSDK.js +77 -77
  79. package/dist/utils/initStoreData.d.ts +3 -3
  80. package/dist/utils/initStoreData.js +62 -62
  81. package/dist/utils/interfaces/IClientCMSData.d.ts +132 -132
  82. package/dist/utils/interfaces/IClientCMSData.js +2 -2
  83. package/dist/utils/interfaces/IEndpointResult.d.ts +10 -10
  84. package/dist/utils/interfaces/IEndpointResult.js +2 -2
  85. package/dist/utils/interfaces/IFacebookUserProfile.d.ts +10 -10
  86. package/dist/utils/interfaces/IFacebookUserProfile.js +2 -2
  87. package/dist/utils/interfaces/IFilter.d.ts +23 -23
  88. package/dist/utils/interfaces/IFilter.js +2 -2
  89. package/dist/utils/interfaces/IGoogleUserProfile.d.ts +7 -7
  90. package/dist/utils/interfaces/IGoogleUserProfile.js +2 -2
  91. package/dist/utils/interfaces/ISDKConfig.d.ts +7 -7
  92. package/dist/utils/interfaces/ISDKConfig.js +2 -2
  93. package/dist/utils/interfaces/ISpaceData.d.ts +14 -14
  94. package/dist/utils/interfaces/ISpaceData.js +2 -2
  95. package/dist/utils/larivieremeunier.d.ts +3 -3
  96. package/dist/utils/larivieremeunier.js +156 -156
  97. package/dist/utils/technosupply.d.ts +3 -3
  98. package/dist/utils/technosupply.js +155 -155
  99. package/package.json +60 -60
  100. package/publish.sh +125 -125
package/dist/index.js CHANGED
@@ -1,1796 +1,1796 @@
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
- var __rest = (this && this.__rest) || function (s, e) {
50
- var t = {};
51
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
52
- t[p] = s[p];
53
- if (s != null && typeof Object.getOwnPropertySymbols === "function")
54
- for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
55
- if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
56
- t[p[i]] = s[p[i]];
57
- }
58
- return t;
59
- };
60
- var __importDefault = (this && this.__importDefault) || function (mod) {
61
- return (mod && mod.__esModule) ? mod : { "default": mod };
62
- };
63
- Object.defineProperty(exports, "__esModule", { value: true });
64
- var isomorphic_unfetch_1 = __importDefault(require("isomorphic-unfetch"));
65
- var image_1 = __importDefault(require("./lib/models/image"));
66
- var wishlist_1 = __importDefault(require("./lib/models/wishlist"));
67
- var stockNotification_1 = __importDefault(require("./lib/models/stockNotification"));
68
- var Product_1 = __importDefault(require("addio-admin-sdk/dist/lib/Product"));
69
- var js_cookie_1 = __importDefault(require("js-cookie"));
70
- var g2_1 = require("addio-admin-sdk/dist/rules/GR/utils/g2");
71
- var functions_1 = require("./utils/functions");
72
- var zones_1 = require("addio-admin-sdk/dist/utils/zones");
73
- var lodash_1 = require("lodash");
74
- var functions_2 = require("./utils/functions");
75
- var data_1 = require("addio-admin-sdk/dist/utils/data");
76
- var moment_1 = __importDefault(require("moment"));
77
- var object_1 = require("addio-admin-sdk/dist/utils/object");
78
- var SDK = (function () {
79
- function SDK() {
80
- var _this = this;
81
- this.init = function (sdk_config) { return __awaiter(_this, void 0, void 0, function () {
82
- return __generator(this, function (_a) {
83
- this._api = sdk_config.api;
84
- this._token = sdk_config.token;
85
- this._url = sdk_config.url;
86
- this._org = sdk_config.org;
87
- this._userToken = !!sdk_config.userToken ? sdk_config.userToken : '';
88
- this._storeData = null;
89
- return [2];
90
- });
91
- }); };
92
- this.getAPIInfos = function () { return ({
93
- api: _this._api,
94
- token: _this._token,
95
- userToken: _this._userToken,
96
- org: _this._org
97
- }); };
98
- this.initWishlist = function (wishlist) { return __awaiter(_this, void 0, void 0, function () {
99
- return __generator(this, function (_a) {
100
- switch (_a.label) {
101
- case 0:
102
- this._wishlist = new wishlist_1.default(wishlist, this._api, this._token, this._userToken, this.setUserToken);
103
- return [4, this._wishlist.getFromDatabase(wishlist)];
104
- case 1: return [2, _a.sent()];
105
- }
106
- });
107
- }); };
108
- this.initStockNotif = function (stockNotif) { return __awaiter(_this, void 0, void 0, function () {
109
- return __generator(this, function (_a) {
110
- switch (_a.label) {
111
- case 0:
112
- this._stockNotif = new stockNotification_1.default(stockNotif, this._api, this._token, this._userToken, this.setUserToken);
113
- return [4, this._stockNotif.getFromDatabase(stockNotif)];
114
- case 1: return [2, _a.sent()];
115
- }
116
- });
117
- }); };
118
- this.initStoreData = function (defaultData) { return __awaiter(_this, void 0, void 0, function () {
119
- var fetchData, responseData;
120
- return __generator(this, function (_a) {
121
- switch (_a.label) {
122
- case 0:
123
- if (!!defaultData) {
124
- this._storeData = defaultData;
125
- return [2];
126
- }
127
- return [4, (0, isomorphic_unfetch_1.default)("".concat(this._api, "/store"), {
128
- method: 'GET',
129
- headers: {
130
- authorization: "Bearer ".concat(this._token),
131
- 'Content-Type': 'application/json'
132
- }
133
- })];
134
- case 1:
135
- fetchData = _a.sent();
136
- return [4, fetchData.json()];
137
- case 2:
138
- responseData = _a.sent();
139
- if (responseData.status !== 200) {
140
- throw new Error(JSON.stringify({ status: responseData.status, error: responseData.error }));
141
- }
142
- this._storeData = responseData.data;
143
- return [2, this._storeData];
144
- }
145
- });
146
- }); };
147
- this.shouldShowFixedPromoBanner = function (fixedPromoBannerData) {
148
- if (!!!fixedPromoBannerData.is_active) {
149
- return false;
150
- }
151
- if (!!fixedPromoBannerData.active_between_dates && !!fixedPromoBannerData.active_between_dates.length) {
152
- var date = fixedPromoBannerData.active_between_dates.some(function (date) {
153
- return (0, moment_1.default)().isBetween((0, moment_1.default)((0, data_1.formatDate)(date.start)), (0, moment_1.default)((0, data_1.formatDate)(date.end)), 'days', '[]');
154
- });
155
- return !!date;
156
- }
157
- return true;
158
- };
159
- this.getInventoryItem = function (sku, locale) { return __awaiter(_this, void 0, void 0, function () {
160
- var fetchData, responseData;
161
- return __generator(this, function (_a) {
162
- switch (_a.label) {
163
- case 0: return [4, (0, isomorphic_unfetch_1.default)("".concat(this._api, "/inventory/").concat(encodeURIComponent(sku)), {
164
- method: 'GET',
165
- headers: {
166
- Authorization: "Bearer ".concat(this._token),
167
- 'x-gng-ecomm-locale': locale
168
- }
169
- })];
170
- case 1:
171
- fetchData = _a.sent();
172
- return [4, fetchData.json()];
173
- case 2:
174
- responseData = _a.sent();
175
- if (responseData.status !== 200)
176
- throw new Error(JSON.stringify({ status: responseData.status, error: responseData.error }));
177
- return [2, responseData.data];
178
- }
179
- });
180
- }); };
181
- this.getFullInventory = function (locale) { return __awaiter(_this, void 0, void 0, function () {
182
- var fetchData, responseData;
183
- return __generator(this, function (_a) {
184
- switch (_a.label) {
185
- case 0: return [4, (0, isomorphic_unfetch_1.default)("".concat(this._api, "/inventory"), {
186
- method: 'GET',
187
- headers: {
188
- Authorization: "Bearer ".concat(this._token),
189
- 'x-gng-ecomm-locale': locale
190
- }
191
- })];
192
- case 1:
193
- fetchData = _a.sent();
194
- return [4, fetchData.json()];
195
- case 2:
196
- responseData = _a.sent();
197
- if (responseData.status !== 200)
198
- throw new Error(JSON.stringify({ status: responseData.status, error: responseData.error }));
199
- return [2, responseData.data];
200
- }
201
- });
202
- }); };
203
- this.inventory = {
204
- getFullInventory: this.getFullInventory,
205
- getInventoryItem: this.getInventoryItem
206
- };
207
- this.setUserToken = function (token) {
208
- _this._userToken = token;
209
- localStorage.setItem('userToken', token);
210
- js_cookie_1.default.set('userToken', token, { sameSite: 'strict', secure: true });
211
- };
212
- this.loginUserWithFacebook = function (fb) { return __awaiter(_this, void 0, void 0, function () {
213
- var email, id, name, fetchData, responseData;
214
- return __generator(this, function (_a) {
215
- switch (_a.label) {
216
- case 0:
217
- email = fb.email, id = fb.id, name = fb.name;
218
- return [4, (0, isomorphic_unfetch_1.default)("".concat(this._api, "/signinwithfacebook"), {
219
- method: 'POST',
220
- headers: {
221
- authorization: "Bearer ".concat(this._token),
222
- 'Content-Type': 'application/json'
223
- },
224
- body: JSON.stringify({ email: email, userID: id, name: name })
225
- })];
226
- case 1:
227
- fetchData = _a.sent();
228
- return [4, fetchData.json()];
229
- case 2:
230
- responseData = _a.sent();
231
- if (responseData.status !== 200) {
232
- throw { status: responseData.status, error: responseData.error };
233
- }
234
- try {
235
- if (!!!responseData.data.userData) {
236
- throw {
237
- status: responseData.status,
238
- error: 'user_not_found'
239
- };
240
- }
241
- if (!!responseData.data.cartData) {
242
- localStorage.setItem("".concat(this._org, "__cart"), responseData.data.cartData.id);
243
- }
244
- if (responseData.token)
245
- this.setUserToken(responseData.token);
246
- return [2, { userData: responseData.data.userData, cart: responseData.data.cartData }];
247
- }
248
- catch (err) {
249
- return [2, err.toString()];
250
- }
251
- return [2];
252
- }
253
- });
254
- }); };
255
- this.anonymousResetPassword = function (locale, id, oldPassword, newPassword, confirmPassword) { return __awaiter(_this, void 0, void 0, function () {
256
- var fetchData, responseData, error_1;
257
- return __generator(this, function (_a) {
258
- switch (_a.label) {
259
- case 0:
260
- _a.trys.push([0, 3, , 4]);
261
- return [4, (0, isomorphic_unfetch_1.default)("".concat(this._api, "/anonymousResetPassword"), {
262
- method: 'POST',
263
- headers: {
264
- authorization: "Bearer ".concat(this._token),
265
- 'Content-Type': 'application/json',
266
- 'x-gng-ecomm-locale': locale
267
- },
268
- body: JSON.stringify({
269
- id: id,
270
- oldPassword: oldPassword,
271
- newPassword: newPassword,
272
- confirmPassword: confirmPassword
273
- })
274
- })];
275
- case 1:
276
- fetchData = _a.sent();
277
- return [4, fetchData.json()];
278
- case 2:
279
- responseData = _a.sent();
280
- if (responseData.status !== 200) {
281
- return [2, { status: responseData.status, error: responseData.error }];
282
- }
283
- return [2, { status: responseData.status, data: { done: true } }];
284
- case 3:
285
- error_1 = _a.sent();
286
- console.log('error dans le catch du sdk: ', typeof error_1, error_1);
287
- return [2, {
288
- status: 400,
289
- error: typeof error_1 === 'string' ? error_1 : error_1.toString()
290
- }];
291
- case 4: return [2];
292
- }
293
- });
294
- }); };
295
- this.loginUser = function (locale, email, password, keepCart, isClerk) {
296
- if (keepCart === void 0) { keepCart = false; }
297
- if (isClerk === void 0) { isClerk = false; }
298
- return __awaiter(_this, void 0, void 0, function () {
299
- var fetchData, responseData, cartData, shouldResetCartData, currentCartInLocalStorage;
300
- return __generator(this, function (_a) {
301
- switch (_a.label) {
302
- case 0: return [4, (0, isomorphic_unfetch_1.default)("".concat(this._api, "/signin"), {
303
- method: 'POST',
304
- headers: {
305
- authorization: "Bearer ".concat(this._token),
306
- 'Content-Type': 'application/json',
307
- 'x-gng-ecomm-locale': locale
308
- },
309
- body: JSON.stringify({ email: email, password: password, isClerk: isClerk })
310
- })];
311
- case 1:
312
- fetchData = _a.sent();
313
- return [4, fetchData.json()];
314
- case 2:
315
- responseData = _a.sent();
316
- if (responseData.status !== 200) {
317
- throw { status: responseData.status, error: responseData.error };
318
- }
319
- try {
320
- if (!!!responseData.data.userData) {
321
- throw {
322
- status: responseData.status,
323
- error: 'user_not_found'
324
- };
325
- }
326
- cartData = responseData.data.cartData;
327
- shouldResetCartData = !!cartData && !!cartData.clerk_id && !!!isClerk;
328
- currentCartInLocalStorage = !!shouldResetCartData || !!!keepCart ? false : localStorage.getItem("".concat(this._org, "__cart"));
329
- if (!!cartData && !!!currentCartInLocalStorage) {
330
- localStorage.setItem("".concat(this._org, "__cart"), responseData.data.cartData.id);
331
- }
332
- if (responseData.token)
333
- this.setUserToken(responseData.token);
334
- return [2, {
335
- userData: responseData.data.userData,
336
- cart: shouldResetCartData ? null : cartData
337
- }];
338
- }
339
- catch (err) {
340
- return [2, err.toString()];
341
- }
342
- return [2];
343
- }
344
- });
345
- });
346
- };
347
- this.loginUserWithID = function (locale, id, password, keepCart, isClerk) {
348
- if (keepCart === void 0) { keepCart = false; }
349
- if (isClerk === void 0) { isClerk = false; }
350
- return __awaiter(_this, void 0, void 0, function () {
351
- var fetchData, responseData, currentCartInLocalStorage;
352
- return __generator(this, function (_a) {
353
- switch (_a.label) {
354
- case 0: return [4, (0, isomorphic_unfetch_1.default)("".concat(this._api, "/signinwithid"), {
355
- method: 'POST',
356
- headers: {
357
- authorization: "Bearer ".concat(this._token),
358
- 'Content-Type': 'application/json',
359
- 'x-gng-ecomm-locale': locale
360
- },
361
- body: JSON.stringify({ id: id, password: password, isClerk: isClerk })
362
- })];
363
- case 1:
364
- fetchData = _a.sent();
365
- return [4, fetchData.json()];
366
- case 2:
367
- responseData = _a.sent();
368
- if (responseData.status !== 200) {
369
- throw { status: responseData.status, error: responseData.error };
370
- }
371
- if (!!!responseData.data.userData) {
372
- throw {
373
- status: responseData.status,
374
- error: 'user_not_found'
375
- };
376
- }
377
- currentCartInLocalStorage = !!!keepCart ? false : localStorage.getItem("".concat(this._org, "__cart"));
378
- if (!!responseData.data.cartData && !!!currentCartInLocalStorage) {
379
- localStorage.setItem("".concat(this._org, "__cart"), responseData.data.cartData.id);
380
- }
381
- if (responseData.token)
382
- this.setUserToken(responseData.token);
383
- return [2, { userData: responseData.data.userData, cart: responseData.data.cartData }];
384
- }
385
- });
386
- });
387
- };
388
- this.checkG2ForCustomer = function (id, currentCustomer, customerGroups) { return __awaiter(_this, void 0, void 0, function () {
389
- var fetchData, G2RequestRes, allG2Customers, customerToCheck, customerToCreate, e_1;
390
- return __generator(this, function (_a) {
391
- switch (_a.label) {
392
- case 0:
393
- _a.trys.push([0, 3, , 4]);
394
- return [4, (0, isomorphic_unfetch_1.default)("".concat(this._api, "/services/g2/customers/").concat(id), {
395
- method: 'GET',
396
- headers: {
397
- authorization: "Bearer ".concat(this._token),
398
- 'Content-Type': 'application/json'
399
- }
400
- })];
401
- case 1:
402
- fetchData = _a.sent();
403
- return [4, fetchData.json()];
404
- case 2:
405
- G2RequestRes = _a.sent();
406
- if (!!fetchData.status && fetchData.status !== 200)
407
- throw "".concat(fetchData.status);
408
- if (!!!G2RequestRes || !!!G2RequestRes.length)
409
- throw 'no data';
410
- allG2Customers = G2RequestRes;
411
- customerToCheck = allG2Customers[0];
412
- if (!!(0, object_1.recursiveCheckObject)(customerToCheck, 'client.noClient') && customerToCheck.client.noClient !== id)
413
- throw 'no data';
414
- customerToCreate = (0, g2_1.transformG2CustomerToCustomer)(customerToCheck, currentCustomer, customerGroups);
415
- return [2, customerToCreate];
416
- case 3:
417
- e_1 = _a.sent();
418
- console.log('error on fetching G2 customer: ', e_1.toString());
419
- return [2];
420
- case 4: return [2];
421
- }
422
- });
423
- }); };
424
- this.createProCustomer = function (customer) { return __awaiter(_this, void 0, void 0, function () {
425
- var fetchData, result, e_2;
426
- return __generator(this, function (_a) {
427
- switch (_a.label) {
428
- case 0:
429
- _a.trys.push([0, 3, , 4]);
430
- return [4, (0, isomorphic_unfetch_1.default)("".concat(this._api, "/user/createProWithId"), {
431
- method: 'POST',
432
- headers: {
433
- authorization: "Bearer ".concat(this._token),
434
- 'Content-Type': 'application/json'
435
- },
436
- body: JSON.stringify({ customer: customer })
437
- })];
438
- case 1:
439
- fetchData = _a.sent();
440
- return [4, fetchData.json()];
441
- case 2:
442
- result = _a.sent();
443
- if (!!fetchData.status && fetchData.status !== 200)
444
- throw "".concat(result.data);
445
- return [2, true];
446
- case 3:
447
- e_2 = _a.sent();
448
- console.log('error on creating G2 customer: ', e_2.toString());
449
- return [2, e_2.toString()];
450
- case 4: return [2];
451
- }
452
- });
453
- }); };
454
- this.fetchCustomPriceList = function (customerID, isPA) {
455
- if (isPA === void 0) { isPA = false; }
456
- return __awaiter(_this, void 0, void 0, function () {
457
- var id, g2PriceListQuery, prices, e_3;
458
- return __generator(this, function (_a) {
459
- switch (_a.label) {
460
- case 0:
461
- _a.trys.push([0, 3, , 4]);
462
- id = !!isPA ? "".concat(customerID, "PA") : customerID;
463
- return [4, (0, isomorphic_unfetch_1.default)("".concat(this._api, "/services/g2/customers/").concat(id, "/customPrices"), {
464
- method: 'POST',
465
- headers: {
466
- authorization: "Bearer ".concat(this._token),
467
- 'Content-Type': 'application/json'
468
- }
469
- })];
470
- case 1:
471
- g2PriceListQuery = _a.sent();
472
- return [4, g2PriceListQuery.json()];
473
- case 2:
474
- prices = _a.sent();
475
- if (!!g2PriceListQuery.status && g2PriceListQuery.status !== 200)
476
- throw "Error - ".concat(g2PriceListQuery.status);
477
- if (!!!prices || !!!prices.length)
478
- throw 'Error - no data';
479
- return [2, prices];
480
- case 3:
481
- e_3 = _a.sent();
482
- console.log('error on fetching customer from G2: ', e_3);
483
- return [2];
484
- case 4: return [2];
485
- }
486
- });
487
- });
488
- };
489
- this.validateAccount = function (code) { return __awaiter(_this, void 0, void 0, function () {
490
- var fetchData, responseData;
491
- return __generator(this, function (_a) {
492
- switch (_a.label) {
493
- case 0: return [4, (0, isomorphic_unfetch_1.default)("".concat(this._api, "/user/validateEmail"), {
494
- method: 'POST',
495
- headers: {
496
- authorization: "Bearer ".concat(this._token),
497
- 'Content-Type': 'application/json',
498
- 'x-gng-ecomm-token': this._userToken
499
- },
500
- body: JSON.stringify({ code: code })
501
- })];
502
- case 1:
503
- fetchData = _a.sent();
504
- return [4, fetchData.json()];
505
- case 2:
506
- responseData = _a.sent();
507
- if (responseData.status !== 200) {
508
- throw new Error(JSON.stringify({ status: responseData.status, error: responseData.error }));
509
- }
510
- if (!!!responseData.data.userData) {
511
- throw new Error(JSON.stringify({ status: responseData.status, error: 'User not sent in request.' }));
512
- }
513
- if (responseData.token)
514
- this.setUserToken(responseData.token);
515
- return [2, responseData.data.userData];
516
- }
517
- });
518
- }); };
519
- this.logout = function () {
520
- _this.setUserToken('');
521
- localStorage.removeItem("".concat(_this._org, "__cart"));
522
- localStorage.removeItem('userLogged');
523
- localStorage.removeItem('isPro');
524
- localStorage.removeItem('foundInG2');
525
- localStorage.removeItem('customPriceList');
526
- localStorage.removeItem('lastCustomPriceFetch');
527
- localStorage.removeItem('userToken');
528
- localStorage.removeItem('wishlist');
529
- localStorage.removeItem('stockNotification');
530
- js_cookie_1.default.remove('userToken', { expires: new Date(0) });
531
- };
532
- this.registerUser = function (locale, userData, password) { return __awaiter(_this, void 0, void 0, function () {
533
- var fetchData, responseData;
534
- return __generator(this, function (_a) {
535
- switch (_a.label) {
536
- case 0: return [4, (0, isomorphic_unfetch_1.default)("".concat(this._api, "/register"), {
537
- method: 'PUT',
538
- headers: {
539
- Authorization: "Bearer ".concat(this._token),
540
- 'Content-Type': 'application/json',
541
- 'x-gng-ecomm-locale': locale
542
- },
543
- body: JSON.stringify({ userData: userData, password: password })
544
- })];
545
- case 1:
546
- fetchData = _a.sent();
547
- if (fetchData.status == 200)
548
- return [2, { status: 200, error: '' }];
549
- return [4, fetchData.json()];
550
- case 2:
551
- responseData = _a.sent();
552
- return [2, { status: responseData.status, error: responseData.error }];
553
- }
554
- });
555
- }); };
556
- this.getUser = function (keepTempHash) { return __awaiter(_this, void 0, void 0, function () {
557
- var token, localToken, fetchData, responseData, _a, temp_hash, rest;
558
- return __generator(this, function (_b) {
559
- switch (_b.label) {
560
- case 0:
561
- token = this._userToken;
562
- if (!!!token) {
563
- localToken = localStorage.getItem('userToken');
564
- if (!!localToken) {
565
- token = localToken;
566
- }
567
- }
568
- return [4, (0, isomorphic_unfetch_1.default)("".concat(this._api, "/user/get"), {
569
- method: 'GET',
570
- headers: {
571
- authorization: "Bearer ".concat(this._token),
572
- 'Content-Type': 'application/json',
573
- 'x-gng-ecomm-token': token
574
- }
575
- })];
576
- case 1:
577
- fetchData = _b.sent();
578
- return [4, fetchData.json()];
579
- case 2:
580
- responseData = _b.sent();
581
- if (responseData.status !== 200) {
582
- throw new Error(JSON.stringify({ status: responseData.status, error: responseData.error }));
583
- }
584
- if (!!!responseData.data.userData) {
585
- throw new Error(JSON.stringify({ status: responseData.status, error: 'User not sent in request.' }));
586
- }
587
- if (responseData.token)
588
- this.setUserToken(responseData.token);
589
- _a = responseData.data.userData, temp_hash = _a.temp_hash, rest = __rest(_a, ["temp_hash"]);
590
- return [2, __assign(__assign({}, rest), (!!keepTempHash ? { temp_hash: temp_hash } : {}))];
591
- }
592
- });
593
- }); };
594
- this.saveUser = function (userData) { return __awaiter(_this, void 0, void 0, function () {
595
- var fetchData, responseData;
596
- return __generator(this, function (_a) {
597
- switch (_a.label) {
598
- case 0: return [4, (0, isomorphic_unfetch_1.default)("".concat(this._api, "/user/save"), {
599
- method: 'POST',
600
- headers: {
601
- authorization: "Bearer ".concat(this._token),
602
- 'Content-Type': 'application/json',
603
- 'x-gng-ecomm-token': this._userToken
604
- },
605
- body: JSON.stringify({ userData: userData })
606
- })];
607
- case 1:
608
- fetchData = _a.sent();
609
- return [4, fetchData.json()];
610
- case 2:
611
- responseData = _a.sent();
612
- if (responseData.status !== 200) {
613
- throw new Error(JSON.stringify({ status: responseData.status, error: responseData.error }));
614
- }
615
- if (responseData.data !== 'done') {
616
- throw new Error(JSON.stringify({ status: responseData.status, error: 'User not sent in response.' }));
617
- }
618
- if (responseData.token)
619
- this.setUserToken(responseData.token);
620
- return [2, true];
621
- }
622
- });
623
- }); };
624
- this.deleteUser = function () { return __awaiter(_this, void 0, void 0, function () {
625
- var fetchData, responseData;
626
- return __generator(this, function (_a) {
627
- switch (_a.label) {
628
- case 0: return [4, (0, isomorphic_unfetch_1.default)("".concat(this._api, "/user/delete"), {
629
- method: 'GET',
630
- headers: {
631
- authorization: "Bearer ".concat(this._token),
632
- 'x-gng-ecomm-token': this._userToken
633
- }
634
- })];
635
- case 1:
636
- fetchData = _a.sent();
637
- return [4, fetchData.json()];
638
- case 2:
639
- responseData = _a.sent();
640
- if (responseData.status !== 200) {
641
- return [2, false];
642
- }
643
- return [2, true];
644
- }
645
- });
646
- }); };
647
- this.getOrders = function () { return __awaiter(_this, void 0, void 0, function () {
648
- var fetchData, responseData;
649
- return __generator(this, function (_a) {
650
- switch (_a.label) {
651
- case 0: return [4, (0, isomorphic_unfetch_1.default)("".concat(this._api, "/user/orders"), {
652
- method: 'GET',
653
- headers: {
654
- authorization: "Bearer ".concat(this._token),
655
- 'Content-Type': 'application/json',
656
- 'x-gng-ecomm-token': this._userToken
657
- }
658
- })];
659
- case 1:
660
- fetchData = _a.sent();
661
- return [4, fetchData.json()];
662
- case 2:
663
- responseData = (_a.sent());
664
- if (responseData.status !== 200) {
665
- return [2, responseData.data];
666
- }
667
- return [2, responseData.data];
668
- }
669
- });
670
- }); };
671
- this.killRepCart = function (hashed_cart_id) { return __awaiter(_this, void 0, void 0, function () {
672
- var fetchData, responseData, error_2;
673
- return __generator(this, function (_a) {
674
- switch (_a.label) {
675
- case 0:
676
- _a.trys.push([0, 3, , 4]);
677
- return [4, (0, isomorphic_unfetch_1.default)("".concat(this._api, "/user/killRepCart/").concat(encodeURIComponent(hashed_cart_id)), {
678
- method: 'GET',
679
- headers: {
680
- authorization: "Bearer ".concat(this._token),
681
- 'Content-Type': 'application/json',
682
- 'x-gng-ecomm-token': this._userToken
683
- }
684
- })];
685
- case 1:
686
- fetchData = _a.sent();
687
- return [4, fetchData.json()];
688
- case 2:
689
- responseData = (_a.sent());
690
- if (responseData.status !== 200) {
691
- return [2, responseData.data];
692
- }
693
- return [2, responseData.data];
694
- case 3:
695
- error_2 = _a.sent();
696
- console.log(error_2);
697
- return [2, ''];
698
- case 4: return [2];
699
- }
700
- });
701
- }); };
702
- this.getOrder = function (orderID, token) { return __awaiter(_this, void 0, void 0, function () {
703
- var fetchData, responseData, error_3;
704
- return __generator(this, function (_a) {
705
- switch (_a.label) {
706
- case 0:
707
- _a.trys.push([0, 3, , 4]);
708
- return [4, (0, isomorphic_unfetch_1.default)("".concat(this._api, "/user/order/").concat(orderID), {
709
- method: 'POST',
710
- headers: {
711
- authorization: "Bearer ".concat(this._token),
712
- 'Content-Type': 'application/json',
713
- 'x-gng-ecomm-token': this._userToken
714
- },
715
- body: JSON.stringify({ orderToken: token })
716
- })];
717
- case 1:
718
- fetchData = _a.sent();
719
- return [4, fetchData.json()];
720
- case 2:
721
- responseData = (_a.sent());
722
- if (responseData.status !== 200) {
723
- return [2, responseData.data];
724
- }
725
- return [2, responseData.data];
726
- case 3:
727
- error_3 = _a.sent();
728
- console.log(error_3);
729
- return [2, ''];
730
- case 4: return [2];
731
- }
732
- });
733
- }); };
734
- this.changeProfilePicture = function (file) { return __awaiter(_this, void 0, void 0, function () {
735
- var fetchData, responseData;
736
- return __generator(this, function (_a) {
737
- switch (_a.label) {
738
- case 0: return [4, (0, isomorphic_unfetch_1.default)("".concat(this._api, "/user/changeProfilePicture"), {
739
- method: 'POST',
740
- headers: {
741
- authorization: "Bearer ".concat(this._token),
742
- 'Content-Type': 'application/json',
743
- 'x-gng-ecomm-token': this._userToken
744
- },
745
- body: JSON.stringify({
746
- file: file
747
- })
748
- })];
749
- case 1:
750
- fetchData = _a.sent();
751
- return [4, fetchData.json()];
752
- case 2:
753
- responseData = (_a.sent());
754
- return [2, responseData.data];
755
- }
756
- });
757
- }); };
758
- this.changePassword = function (currentPassword, newPassword) { return __awaiter(_this, void 0, void 0, function () {
759
- var fetchData, responseData;
760
- return __generator(this, function (_a) {
761
- switch (_a.label) {
762
- case 0: return [4, (0, isomorphic_unfetch_1.default)("".concat(this._api, "/user/changePassword"), {
763
- method: 'POST',
764
- headers: {
765
- authorization: "Bearer ".concat(this._token),
766
- 'Content-Type': 'application/json',
767
- 'x-gng-ecomm-token': this._userToken
768
- },
769
- body: JSON.stringify({ currentPassword: currentPassword, newPassword: newPassword })
770
- })];
771
- case 1:
772
- fetchData = _a.sent();
773
- return [4, fetchData.json()];
774
- case 2:
775
- responseData = (_a.sent());
776
- if (responseData.status === 200)
777
- return [2, responseData.data];
778
- return [2, responseData.error];
779
- }
780
- });
781
- }); };
782
- this.sendResetPasswordEmail = function (locale, userEmail, forPro, withEmail, isTest) { return __awaiter(_this, void 0, void 0, function () {
783
- var fetchData, responseData;
784
- return __generator(this, function (_a) {
785
- switch (_a.label) {
786
- case 0: return [4, (0, isomorphic_unfetch_1.default)("".concat(this._api, "/user/sentForgotPasswordEmail"), {
787
- method: 'POST',
788
- headers: {
789
- authorization: "Bearer ".concat(this._token),
790
- 'Content-Type': 'application/json',
791
- 'x-gng-ecomm-token': this._userToken,
792
- 'x-gng-ecomm-locale': locale
793
- },
794
- body: JSON.stringify({ userEmail: userEmail, forPro: forPro, withEmail: withEmail, isTest: isTest })
795
- })];
796
- case 1:
797
- fetchData = _a.sent();
798
- return [4, fetchData.json()];
799
- case 2:
800
- responseData = (_a.sent());
801
- if (responseData.status === 200)
802
- return [2, responseData.data];
803
- if (responseData.status === 403)
804
- return [2, {
805
- fr: "Plus d'un compte a \u00E9t\u00E9 trouv\u00E9 avec ".concat(withEmail ? 'ce courriel' : 'ce ID client', ". Veuillez contacter un administrateur pour proc\u00E9der."),
806
- en: "More than one account was found with ".concat(withEmail ? 'this email' : 'this client ID', ". Please contact an administrator to proceed.")
807
- }];
808
- return [2, responseData.error];
809
- }
810
- });
811
- }); };
812
- this.sendApplicationEmail = function (locale, form) { return __awaiter(_this, void 0, void 0, function () {
813
- var cvBase64, fetchData, responseData, error_4;
814
- return __generator(this, function (_a) {
815
- switch (_a.label) {
816
- case 0:
817
- _a.trys.push([0, 4, , 5]);
818
- if (!!!form.cv)
819
- return [2, {
820
- error: "Couldn't find cv"
821
- }];
822
- return [4, (0, functions_2.toBase64)(form.cv)];
823
- case 1:
824
- cvBase64 = _a.sent();
825
- if (typeof cvBase64 !== 'string') {
826
- return [2, {
827
- error: "Couldn't convert file to base64"
828
- }];
829
- }
830
- return [4, (0, isomorphic_unfetch_1.default)("".concat(this._api, "/email/sendApplicationEmail"), {
831
- method: 'POST',
832
- headers: {
833
- authorization: "Bearer ".concat(this._token),
834
- 'Content-Type': 'application/json',
835
- 'x-gng-ecomm-token': this._userToken,
836
- 'x-gng-ecomm-locale': locale
837
- },
838
- body: JSON.stringify(__assign(__assign({}, form), { cv: cvBase64 }))
839
- })];
840
- case 2:
841
- fetchData = _a.sent();
842
- return [4, fetchData.json()];
843
- case 3:
844
- responseData = (_a.sent());
845
- if (responseData.status === 200)
846
- return [2, responseData.data];
847
- return [2, responseData.error];
848
- case 4:
849
- error_4 = _a.sent();
850
- return [2, 'error'];
851
- case 5: return [2];
852
- }
853
- });
854
- }); };
855
- this.sendContactEmail = function (locale, form) { return __awaiter(_this, void 0, void 0, function () {
856
- var fetchData, responseData;
857
- return __generator(this, function (_a) {
858
- switch (_a.label) {
859
- case 0: return [4, (0, isomorphic_unfetch_1.default)("".concat(this._api, "/email/sendContactEmail"), {
860
- method: 'POST',
861
- headers: {
862
- authorization: "Bearer ".concat(this._token),
863
- 'Content-Type': 'application/json',
864
- 'x-gng-ecomm-token': this._userToken,
865
- 'x-gng-ecomm-locale': locale
866
- },
867
- body: JSON.stringify(form)
868
- })];
869
- case 1:
870
- fetchData = _a.sent();
871
- return [4, fetchData.json()];
872
- case 2:
873
- responseData = (_a.sent());
874
- if (responseData.status === 200)
875
- return [2, responseData.data];
876
- return [2, responseData.error];
877
- }
878
- });
879
- }); };
880
- this.sendGenericOtherEmail = function (locale, form, templateId, to, replyTo) { return __awaiter(_this, void 0, void 0, function () {
881
- var getSubjectByType, fetchData, responseData, error_5;
882
- return __generator(this, function (_a) {
883
- switch (_a.label) {
884
- case 0:
885
- getSubjectByType = function (type) {
886
- switch (type) {
887
- case 'confirmation_lawn_submission':
888
- return { fr: 'Soumission gazon - Confirmation de réception', en: 'Lawn submission - Confirmation' };
889
- default:
890
- return undefined;
891
- }
892
- };
893
- _a.label = 1;
894
- case 1:
895
- _a.trys.push([1, 4, , 5]);
896
- return [4, (0, isomorphic_unfetch_1.default)("".concat(this._api, "/email/sendGenericOtherEmail"), {
897
- method: 'POST',
898
- headers: {
899
- authorization: "Bearer ".concat(this._token),
900
- 'Content-Type': 'application/json',
901
- 'x-gng-ecomm-token': this._userToken,
902
- 'x-gng-ecomm-locale': locale
903
- },
904
- body: JSON.stringify(__assign(__assign({}, (!!form ? { content: form } : {})), { subject: getSubjectByType(templateId), templateId: templateId, to: to, replyTo: replyTo }))
905
- })];
906
- case 2:
907
- fetchData = _a.sent();
908
- return [4, fetchData.json()];
909
- case 3:
910
- responseData = (_a.sent());
911
- if (responseData.status === 200)
912
- return [2, responseData.data];
913
- return [2, responseData.error];
914
- case 4:
915
- error_5 = _a.sent();
916
- console.log('error on sendGenericOtherEmail: ', error_5);
917
- return [3, 5];
918
- case 5: return [2];
919
- }
920
- });
921
- }); };
922
- this.sendServicePageEmail = function (locale, form, type, testEmail) { return __awaiter(_this, void 0, void 0, function () {
923
- var attachments, rest, updatedAttachments, _i, _a, att, cvBase64, e_4, getSubjectByType, fetchData, responseData, e_5;
924
- return __generator(this, function (_b) {
925
- switch (_b.label) {
926
- case 0:
927
- attachments = form.attachments, rest = __rest(form, ["attachments"]);
928
- updatedAttachments = [];
929
- if (!!!attachments) return [3, 6];
930
- _i = 0, _a = attachments;
931
- _b.label = 1;
932
- case 1:
933
- if (!(_i < _a.length)) return [3, 6];
934
- att = _a[_i];
935
- _b.label = 2;
936
- case 2:
937
- _b.trys.push([2, 4, , 5]);
938
- return [4, (0, functions_2.toBase64)(att)];
939
- case 3:
940
- cvBase64 = _b.sent();
941
- updatedAttachments.push({ name: att.name, content: cvBase64 });
942
- return [3, 5];
943
- case 4:
944
- e_4 = _b.sent();
945
- console.log('error on converting to base64: ', e_4);
946
- return [3, 5];
947
- case 5:
948
- _i++;
949
- return [3, 1];
950
- case 6:
951
- getSubjectByType = function () {
952
- switch (type) {
953
- case 'admin_3D_plans':
954
- return { fr: 'Plans 3D - Nouvelle demande', en: '3D plans - new request' };
955
- case 'admin_vegetals':
956
- return { fr: 'Commande de végétaux - nouvelle soumission', en: 'Vegetals - new quotation' };
957
- case 'admin_pickup_on_site':
958
- return { fr: 'Ramassage sur chantier - nouvelle demande', en: 'Pickup on site - new request' };
959
- case 'admin_borrow_tools':
960
- return { fr: "Location d'outils - nouvelle demande", en: 'Rent tools - new request' };
961
- case 'admin_sales_info':
962
- return {
963
- fr: 'Produits en solde - Information demandée',
964
- en: 'On sale products - Information request'
965
- };
966
- case 'admin_credit_info':
967
- return {
968
- fr: 'Département de crédit - Information demandée',
969
- en: 'Credit department - Information request'
970
- };
971
- case 'admin_transport_quote':
972
- return {
973
- fr: 'Location de camion - nouvelle soumission',
974
- en: 'Transport truck rental - new quotation'
975
- };
976
- case 'admin_special_order':
977
- return { fr: 'Commande spéciale - nouvelle demande', en: 'Special order - new request' };
978
- case 'admin_installation':
979
- return { fr: 'Installation - nouvelle soumission', en: 'Installation - new quotation' };
980
- case 'admin_find_landscaper':
981
- return { fr: 'Trouver un paysagiste - nouvelle demande', en: 'Find a landscaper - new request' };
982
- case 'admin_lawn_submission':
983
- return { fr: 'Soumission gazon - nouvelle demande', en: 'Lawn submission - new request' };
984
- case 'confirmation_find_landsacper':
985
- return { fr: 'Trouver un paysagiste - Confirmation', en: 'Find a landscaper - Confirmation' };
986
- default:
987
- return { fr: 'Demande de service - nouvelle soumission', en: 'Service request - new quotation' };
988
- }
989
- };
990
- _b.label = 7;
991
- case 7:
992
- _b.trys.push([7, 10, , 11]);
993
- return [4, (0, isomorphic_unfetch_1.default)("".concat(this._api, "/email/sendServiceStaticPageEmail"), {
994
- method: 'POST',
995
- headers: {
996
- authorization: "Bearer ".concat(this._token),
997
- 'Content-Type': 'application/json',
998
- 'x-gng-ecomm-token': this._userToken,
999
- 'x-gng-ecomm-locale': locale
1000
- },
1001
- body: JSON.stringify(__assign(__assign(__assign(__assign({}, rest), (!!updatedAttachments && !!updatedAttachments.length ? { attachments: updatedAttachments } : {})), { subject: getSubjectByType(), title: getSubjectByType(), type: type }), (!!testEmail ? { test_email: testEmail } : {})))
1002
- })];
1003
- case 8:
1004
- fetchData = _b.sent();
1005
- return [4, fetchData.json()];
1006
- case 9:
1007
- responseData = (_b.sent());
1008
- if (responseData.status === 200)
1009
- return [2, true];
1010
- return [2, responseData.error];
1011
- case 10:
1012
- e_5 = _b.sent();
1013
- console.log('error on calling api: ', e_5);
1014
- if (!!updatedAttachments) {
1015
- return [2, {
1016
- status: 413,
1017
- error: {
1018
- fr: "Vos pièces jointes n'ont pas pu être envoyées. Veuillez réessayer.",
1019
- en: 'Your attachments could not be sent. Please try again.'
1020
- }
1021
- }];
1022
- }
1023
- return [2, ''];
1024
- case 11: return [2];
1025
- }
1026
- });
1027
- }); };
1028
- this.sendSponsorRequestEmail = function (locale, form, template_name) { return __awaiter(_this, void 0, void 0, function () {
1029
- var plan, rest, updatedPlan, planBase64, splitString, e_6, fetchData, responseData;
1030
- return __generator(this, function (_a) {
1031
- switch (_a.label) {
1032
- case 0:
1033
- plan = form.plan, rest = __rest(form, ["plan"]);
1034
- if (!!!plan) return [3, 4];
1035
- _a.label = 1;
1036
- case 1:
1037
- _a.trys.push([1, 3, , 4]);
1038
- return [4, (0, functions_2.toBase64)(plan)];
1039
- case 2:
1040
- planBase64 = _a.sent();
1041
- if (typeof planBase64 === 'string') {
1042
- splitString = planBase64.split(';base64,');
1043
- if (!!splitString.length && !!splitString[1]) {
1044
- updatedPlan = {
1045
- name: plan.name,
1046
- content: splitString[1]
1047
- };
1048
- }
1049
- }
1050
- return [3, 4];
1051
- case 3:
1052
- e_6 = _a.sent();
1053
- console.log('error on converting to base64: ', e_6);
1054
- return [3, 4];
1055
- case 4: return [4, (0, isomorphic_unfetch_1.default)("".concat(this._api, "/email/sendSponsorRequestEmail"), {
1056
- method: 'POST',
1057
- headers: {
1058
- authorization: "Bearer ".concat(this._token),
1059
- 'Content-Type': 'application/json',
1060
- 'x-gng-ecomm-token': this._userToken,
1061
- 'x-gng-ecomm-locale': locale
1062
- },
1063
- body: JSON.stringify({
1064
- contenu: __assign(__assign(__assign({}, rest), { admin: true, has_plan: !!updatedPlan }), (!!updatedPlan
1065
- ? {
1066
- plan: updatedPlan
1067
- }
1068
- : {})),
1069
- template_name: template_name
1070
- })
1071
- })];
1072
- case 5:
1073
- fetchData = _a.sent();
1074
- return [4, fetchData.json()];
1075
- case 6:
1076
- responseData = (_a.sent());
1077
- if (responseData.status === 200)
1078
- return [2, true];
1079
- return [2, responseData.error];
1080
- }
1081
- });
1082
- }); };
1083
- this.sendPreMeetingFormEmail = function (locale, form, proId) { return __awaiter(_this, void 0, void 0, function () {
1084
- var attachments, rest, _a, pro_logo, restProInfos, updatedAttachments, updatedLogo, _i, _b, att, cvBase64, e_7, logoBase64, e_8, fetchData, responseData;
1085
- return __generator(this, function (_c) {
1086
- switch (_c.label) {
1087
- case 0:
1088
- attachments = form.attachments, rest = __rest(form, ["attachments"]);
1089
- _a = rest.pro_infos, pro_logo = _a.pro_logo, restProInfos = __rest(_a, ["pro_logo"]);
1090
- updatedAttachments = [];
1091
- updatedLogo = '';
1092
- if (!!!attachments) return [3, 6];
1093
- _i = 0, _b = attachments;
1094
- _c.label = 1;
1095
- case 1:
1096
- if (!(_i < _b.length)) return [3, 6];
1097
- att = _b[_i];
1098
- _c.label = 2;
1099
- case 2:
1100
- _c.trys.push([2, 4, , 5]);
1101
- return [4, (0, functions_2.toBase64)(att)];
1102
- case 3:
1103
- cvBase64 = _c.sent();
1104
- updatedAttachments.push({ name: att.name, content: cvBase64 });
1105
- return [3, 5];
1106
- case 4:
1107
- e_7 = _c.sent();
1108
- console.log('error on converting to base64: ', e_7);
1109
- return [3, 5];
1110
- case 5:
1111
- _i++;
1112
- return [3, 1];
1113
- case 6:
1114
- if (!!!pro_logo) return [3, 10];
1115
- _c.label = 7;
1116
- case 7:
1117
- _c.trys.push([7, 9, , 10]);
1118
- return [4, (0, functions_2.toBase64)(pro_logo)];
1119
- case 8:
1120
- logoBase64 = _c.sent();
1121
- updatedLogo = { name: pro_logo.name, content: logoBase64 };
1122
- return [3, 10];
1123
- case 9:
1124
- e_8 = _c.sent();
1125
- console.log('error on converting logo to base64: ', e_8);
1126
- return [3, 10];
1127
- case 10: return [4, (0, isomorphic_unfetch_1.default)("".concat(this._api, "/email/sendPreMeetingFormEmail"), {
1128
- method: 'POST',
1129
- headers: {
1130
- authorization: "Bearer ".concat(this._token),
1131
- 'Content-Type': 'application/json',
1132
- 'x-gng-ecomm-token': this._userToken,
1133
- 'x-gng-ecomm-locale': locale
1134
- },
1135
- body: JSON.stringify(__assign(__assign(__assign(__assign({}, rest), { pro_infos: __assign(__assign({}, restProInfos), (!!updatedLogo ? { pro_logo: updatedLogo } : {})) }), (!!updatedAttachments && !!updatedAttachments.length ? { attachments: updatedAttachments } : {})), (!!proId ? { pro_id: proId } : {})))
1136
- })];
1137
- case 11:
1138
- fetchData = _c.sent();
1139
- return [4, fetchData.json()];
1140
- case 12:
1141
- responseData = (_c.sent());
1142
- if (responseData.status === 200)
1143
- return [2, true];
1144
- return [2, responseData.error];
1145
- }
1146
- });
1147
- }); };
1148
- this.sendWishlistByEmail = function (locale, contenu, template_name) { return __awaiter(_this, void 0, void 0, function () {
1149
- var fetchData, responseData;
1150
- return __generator(this, function (_a) {
1151
- switch (_a.label) {
1152
- case 0: return [4, (0, isomorphic_unfetch_1.default)("".concat(this._api, "/email/sendWishlistEmail"), {
1153
- method: 'POST',
1154
- headers: {
1155
- authorization: "Bearer ".concat(this._token),
1156
- 'Content-Type': 'application/json',
1157
- 'x-gng-ecomm-token': this._userToken,
1158
- 'x-gng-ecomm-locale': locale
1159
- },
1160
- body: JSON.stringify({ contenu: contenu, template_name: template_name })
1161
- })];
1162
- case 1:
1163
- fetchData = _a.sent();
1164
- return [4, fetchData.json()];
1165
- case 2:
1166
- responseData = (_a.sent());
1167
- if (responseData.status === 200)
1168
- return [2, true];
1169
- return [2, responseData.error];
1170
- }
1171
- });
1172
- }); };
1173
- this.resetPassword = function (token, newPassword, withEmail) { return __awaiter(_this, void 0, void 0, function () {
1174
- var fetchData, responseData;
1175
- return __generator(this, function (_a) {
1176
- switch (_a.label) {
1177
- case 0: return [4, (0, isomorphic_unfetch_1.default)("".concat(this._api, "/user/resetPassword"), {
1178
- method: 'POST',
1179
- headers: {
1180
- authorization: "Bearer ".concat(this._token),
1181
- 'Content-Type': 'application/json',
1182
- 'x-gng-ecomm-token': this._userToken
1183
- },
1184
- body: JSON.stringify({ validationCode: token, newPassword: newPassword, withEmail: withEmail })
1185
- })];
1186
- case 1:
1187
- fetchData = _a.sent();
1188
- return [4, fetchData.json()];
1189
- case 2:
1190
- responseData = (_a.sent());
1191
- if (responseData.status === 200)
1192
- return [2, responseData.data];
1193
- if (responseData.status === 403)
1194
- return [2, {
1195
- fr: "Plus d'un compte a \u00E9t\u00E9 trouv\u00E9 avec ".concat(withEmail ? 'ce courriel' : 'ce ID client', ". Veuillez contacter un administrateur pour proc\u00E9der."),
1196
- en: "More than one account was found with ".concat(withEmail ? 'this email' : 'this client ID', ". Please contact an administrator to proceed.")
1197
- }];
1198
- return [2, responseData.error];
1199
- }
1200
- });
1201
- }); };
1202
- this.user = {
1203
- getUser: this.getUser,
1204
- saveUser: this.saveUser,
1205
- deleteUser: this.deleteUser,
1206
- loginUser: this.loginUser,
1207
- loginUserWithID: this.loginUserWithID,
1208
- loginUserWithFacebook: this.loginUserWithFacebook,
1209
- logout: this.logout,
1210
- registerUser: this.registerUser,
1211
- killRepCart: this.killRepCart,
1212
- getOrder: this.getOrder,
1213
- getOrders: this.getOrders,
1214
- changePassword: this.changePassword,
1215
- changeProfilePicture: this.changeProfilePicture,
1216
- validateAccount: this.validateAccount,
1217
- sendResetPasswordEmail: this.sendResetPasswordEmail,
1218
- resetPassword: this.resetPassword,
1219
- sendApplicationEmail: this.sendApplicationEmail,
1220
- sendContactEmail: this.sendContactEmail,
1221
- sendServiceEmail: this.sendServicePageEmail,
1222
- anonymousResetPassword: this.anonymousResetPassword,
1223
- checkG2: this.checkG2ForCustomer,
1224
- createPro: this.createProCustomer,
1225
- fetchCustomPriceList: this.fetchCustomPriceList
1226
- };
1227
- this.getImage = function (imgName, formatQuery, addImgPath) {
1228
- if (addImgPath === void 0) { addImgPath = false; }
1229
- var img = new image_1.default("".concat(addImgPath ? _this._imgPath : '').concat(_this._imgPath, "/").concat(imgName));
1230
- return img.getFileDownloadUrl(formatQuery);
1231
- };
1232
- this.getProducts = function (page, hpp, query, filters, indice, f, useProspr) {
1233
- if (page === void 0) { page = 0; }
1234
- if (hpp === void 0) { hpp = 10; }
1235
- if (query === void 0) { query = ''; }
1236
- if (filters === void 0) { filters = ''; }
1237
- if (indice === void 0) { indice = 'products'; }
1238
- if (f === void 0) { f = ''; }
1239
- if (useProspr === void 0) { useProspr = false; }
1240
- return __awaiter(_this, void 0, void 0, function () {
1241
- var error_6;
1242
- return __generator(this, function (_a) {
1243
- switch (_a.label) {
1244
- case 0:
1245
- _a.trys.push([0, 2, , 3]);
1246
- return [4, Product_1.default.fetch({
1247
- app: process.env.NEXT_PUBLIC_ALGOLIA_APP,
1248
- api: process.env.NEXT_PUBLIC_ALGOLIA_TOKEN,
1249
- page: page,
1250
- hpp: hpp,
1251
- query: query,
1252
- filters: filters,
1253
- indice: indice || 'products',
1254
- f: f,
1255
- useProspr: useProspr,
1256
- space: undefined
1257
- })];
1258
- case 1: return [2, _a.sent()];
1259
- case 2:
1260
- error_6 = _a.sent();
1261
- throw error_6;
1262
- case 3: return [2];
1263
- }
1264
- });
1265
- });
1266
- };
1267
- this.getProduct = function (parent_slug, locale, useProdArray, noDrafts) { return __awaiter(_this, void 0, void 0, function () {
1268
- var prod, fetchData, responseData;
1269
- return __generator(this, function (_a) {
1270
- switch (_a.label) {
1271
- case 0:
1272
- prod = undefined;
1273
- if (!!useProdArray && !!useProdArray.length) {
1274
- prod = useProdArray.find(function (fee) { return fee.slug === parent_slug; });
1275
- }
1276
- if (!!!!prod) return [3, 3];
1277
- return [4, (0, isomorphic_unfetch_1.default)("".concat(this._api, "/products/").concat(encodeURIComponent(parent_slug)), {
1278
- method: 'GET',
1279
- headers: {
1280
- Authorization: "Bearer ".concat(this._token),
1281
- 'x-gng-ecomm-locale': locale,
1282
- 'x-gng-ecomm-token': this._userToken
1283
- }
1284
- })];
1285
- case 1:
1286
- fetchData = _a.sent();
1287
- return [4, fetchData.json()];
1288
- case 2:
1289
- responseData = _a.sent();
1290
- if (responseData.status !== 200)
1291
- throw new Error(JSON.stringify({ status: responseData.status, error: responseData.error }));
1292
- prod = responseData.data;
1293
- _a.label = 3;
1294
- case 3:
1295
- if (!!noDrafts && prod.draft)
1296
- return [2, undefined];
1297
- return [2, prod];
1298
- }
1299
- });
1300
- }); };
1301
- this.getUpsellOfProducts = function (slugs, customPriceList) { return __awaiter(_this, void 0, void 0, function () {
1302
- var fetchData, responseData;
1303
- return __generator(this, function (_a) {
1304
- switch (_a.label) {
1305
- case 0: return [4, (0, isomorphic_unfetch_1.default)("".concat(this._api, "/products/getUpsellOfProductsWithProducts"), {
1306
- method: 'POST',
1307
- headers: {
1308
- Authorization: "Bearer ".concat(this._token),
1309
- 'Content-Type': 'application/json'
1310
- },
1311
- body: JSON.stringify(__assign({ slugs: slugs }, (!!customPriceList ? { customPriceList: customPriceList } : {})))
1312
- })];
1313
- case 1:
1314
- fetchData = _a.sent();
1315
- return [4, fetchData.json()];
1316
- case 2:
1317
- responseData = _a.sent();
1318
- if (responseData.status !== 200)
1319
- throw new Error(JSON.stringify({ status: responseData.status, error: responseData.error }));
1320
- return [2, responseData.data];
1321
- }
1322
- });
1323
- }); };
1324
- this.getAttributes = function () { return __awaiter(_this, void 0, void 0, function () {
1325
- var fetchData, resJson, error_7;
1326
- return __generator(this, function (_a) {
1327
- switch (_a.label) {
1328
- case 0:
1329
- _a.trys.push([0, 3, , 4]);
1330
- return [4, (0, isomorphic_unfetch_1.default)("".concat(this._api, "/attributes"), {
1331
- method: 'GET',
1332
- headers: {
1333
- authorization: "Bearer ".concat(this._token),
1334
- 'Content-Type': 'application/json'
1335
- }
1336
- })];
1337
- case 1:
1338
- fetchData = _a.sent();
1339
- return [4, fetchData.json()];
1340
- case 2:
1341
- resJson = _a.sent();
1342
- return [2, resJson.data.map(function (a) { return (__assign(__assign({}, a), { slug: !!a.slug ? a.slug : (0, functions_1.string_to_slug)((0, functions_1.translate)('fr', a.name)) })); })];
1343
- case 3:
1344
- error_7 = _a.sent();
1345
- console.log('error fetch attributes: ', error_7);
1346
- return [3, 4];
1347
- case 4: return [2];
1348
- }
1349
- });
1350
- }); };
1351
- this.getCategories = function () { return __awaiter(_this, void 0, void 0, function () {
1352
- var fetchData, resJson, error_8;
1353
- return __generator(this, function (_a) {
1354
- switch (_a.label) {
1355
- case 0:
1356
- _a.trys.push([0, 3, , 4]);
1357
- return [4, (0, isomorphic_unfetch_1.default)("".concat(this._api, "/categories"), {
1358
- method: 'GET',
1359
- headers: {
1360
- authorization: "Bearer ".concat(this._token),
1361
- 'Content-Type': 'application/json'
1362
- }
1363
- })];
1364
- case 1:
1365
- fetchData = _a.sent();
1366
- return [4, fetchData.json()];
1367
- case 2:
1368
- resJson = (_a.sent());
1369
- return [2, resJson.data];
1370
- case 3:
1371
- error_8 = _a.sent();
1372
- console.log('error fetch categories: ', error_8);
1373
- return [3, 4];
1374
- case 4: return [2];
1375
- }
1376
- });
1377
- }); };
1378
- this.getBrands = function () { return __awaiter(_this, void 0, void 0, function () {
1379
- var fetchData, resJson, error_9;
1380
- return __generator(this, function (_a) {
1381
- switch (_a.label) {
1382
- case 0:
1383
- _a.trys.push([0, 3, , 4]);
1384
- return [4, (0, isomorphic_unfetch_1.default)("".concat(this._api, "/brands"), {
1385
- method: 'GET',
1386
- headers: {
1387
- authorization: "Bearer ".concat(this._token),
1388
- 'Content-Type': 'application/json'
1389
- }
1390
- })];
1391
- case 1:
1392
- fetchData = _a.sent();
1393
- return [4, fetchData.json()];
1394
- case 2:
1395
- resJson = (_a.sent());
1396
- return [2, resJson.data];
1397
- case 3:
1398
- error_9 = _a.sent();
1399
- console.log('error fetch brands: ', error_9);
1400
- return [3, 4];
1401
- case 4: return [2];
1402
- }
1403
- });
1404
- }); };
1405
- this.getInventoryItems = function (parentSlug) { return __awaiter(_this, void 0, void 0, function () {
1406
- var fetchData, resJson, error_10;
1407
- return __generator(this, function (_a) {
1408
- switch (_a.label) {
1409
- case 0:
1410
- _a.trys.push([0, 3, , 4]);
1411
- return [4, (0, isomorphic_unfetch_1.default)("".concat(this._api, "/inventories").concat(!!parentSlug ? "/".concat(encodeURIComponent(parentSlug)) : ''), {
1412
- method: 'GET',
1413
- headers: {
1414
- authorization: "Bearer ".concat(this._token),
1415
- 'Content-Type': 'application/json'
1416
- }
1417
- })];
1418
- case 1:
1419
- fetchData = _a.sent();
1420
- return [4, fetchData.json()];
1421
- case 2:
1422
- resJson = (_a.sent());
1423
- return [2, resJson.data];
1424
- case 3:
1425
- error_10 = _a.sent();
1426
- console.log("error fetch inventory items".concat(!!parentSlug ? 'for parentSlug ' + parentSlug : '', ": "), error_10);
1427
- return [3, 4];
1428
- case 4: return [2];
1429
- }
1430
- });
1431
- }); };
1432
- this.getOneInventoryItem = function (sku) { return __awaiter(_this, void 0, void 0, function () {
1433
- var fetchData, resJson, error_11;
1434
- return __generator(this, function (_a) {
1435
- switch (_a.label) {
1436
- case 0:
1437
- _a.trys.push([0, 3, , 4]);
1438
- return [4, (0, isomorphic_unfetch_1.default)("".concat(this._api, "/inventory/").concat(encodeURIComponent(sku)), {
1439
- method: 'GET',
1440
- headers: {
1441
- authorization: "Bearer ".concat(this._token),
1442
- 'Content-Type': 'application/json'
1443
- }
1444
- })];
1445
- case 1:
1446
- fetchData = _a.sent();
1447
- return [4, fetchData.json()];
1448
- case 2:
1449
- resJson = (_a.sent());
1450
- return [2, resJson.data];
1451
- case 3:
1452
- error_11 = _a.sent();
1453
- console.log("error fetch inventory item for sku: ".concat(sku), error_11);
1454
- return [2, undefined];
1455
- case 4: return [2];
1456
- }
1457
- });
1458
- }); };
1459
- this.getLatestProducts = function () { return __awaiter(_this, void 0, void 0, function () {
1460
- var fetchData, resJson, error_12;
1461
- return __generator(this, function (_a) {
1462
- switch (_a.label) {
1463
- case 0:
1464
- _a.trys.push([0, 3, , 4]);
1465
- return [4, (0, isomorphic_unfetch_1.default)("".concat(this._api, "/latest_products"), {
1466
- method: 'GET',
1467
- headers: {
1468
- authorization: "Bearer ".concat(this._token),
1469
- 'Content-Type': 'application/json'
1470
- }
1471
- })];
1472
- case 1:
1473
- fetchData = _a.sent();
1474
- return [4, fetchData.json()];
1475
- case 2:
1476
- resJson = (_a.sent());
1477
- return [2, resJson.data];
1478
- case 3:
1479
- error_12 = _a.sent();
1480
- console.log("error fetching latest products", error_12);
1481
- return [3, 4];
1482
- case 4: return [2];
1483
- }
1484
- });
1485
- }); };
1486
- this._getFees = function () { return __awaiter(_this, void 0, void 0, function () {
1487
- var fetchData, resJson, error_13;
1488
- return __generator(this, function (_a) {
1489
- switch (_a.label) {
1490
- case 0:
1491
- _a.trys.push([0, 3, , 4]);
1492
- return [4, (0, isomorphic_unfetch_1.default)("".concat(this._api, "/products/getFees"), {
1493
- method: 'GET',
1494
- headers: {
1495
- authorization: "Bearer ".concat(this._token),
1496
- 'x-gng-ecomm-token': this._userToken
1497
- }
1498
- })];
1499
- case 1:
1500
- fetchData = _a.sent();
1501
- return [4, fetchData.json()];
1502
- case 2:
1503
- resJson = (_a.sent());
1504
- if (resJson.status !== 200) {
1505
- console.log('error on fetching fees: ', !!resJson.error ? resJson.error.toString() : '');
1506
- return [2, []];
1507
- }
1508
- return [2, resJson.data];
1509
- case 3:
1510
- error_13 = _a.sent();
1511
- console.log("error fetching fees", error_13);
1512
- return [3, 4];
1513
- case 4: return [2];
1514
- }
1515
- });
1516
- }); };
1517
- this.products = {
1518
- getProducts: this.getProducts,
1519
- getProduct: this.getProduct,
1520
- getUpsellOfProducts: this.getUpsellOfProducts,
1521
- getAttributes: this.getAttributes,
1522
- getCategories: this.getCategories,
1523
- getBrands: this.getBrands,
1524
- getInventoryItems: this.getInventoryItems,
1525
- getOneInventoryItem: this.getOneInventoryItem,
1526
- getLatestProducts: this.getLatestProducts,
1527
- getFees: this._getFees
1528
- };
1529
- this.getIfAddressIsInsideZones = function (address) { return __awaiter(_this, void 0, void 0, function () {
1530
- var userPos, lat, lng, zone, zones, google_1, insideZones, _i, zones_2, zone_1, polygon, error_14;
1531
- return __generator(this, function (_a) {
1532
- switch (_a.label) {
1533
- case 0:
1534
- _a.trys.push([0, 4, , 5]);
1535
- return [4, (0, zones_1.getPositionFromAddress)(address)];
1536
- case 1:
1537
- userPos = _a.sent();
1538
- if (!!!userPos)
1539
- return [2, []];
1540
- lat = userPos.lat, lng = userPos.lng;
1541
- return [4, (0, isomorphic_unfetch_1.default)("".concat(this._api, "/shipping/zones"), {
1542
- method: 'POST',
1543
- headers: {
1544
- authorization: "Bearer ".concat(this._token),
1545
- 'Content-Type': 'application/json'
1546
- },
1547
- body: JSON.stringify({ address: address })
1548
- })];
1549
- case 2:
1550
- zone = _a.sent();
1551
- if (zone.status !== 200)
1552
- return [2, []];
1553
- return [4, zone.json()];
1554
- case 3:
1555
- zones = (_a.sent()).data.zones;
1556
- google_1 = window.google;
1557
- insideZones = [];
1558
- for (_i = 0, zones_2 = zones; _i < zones_2.length; _i++) {
1559
- zone_1 = zones_2[_i];
1560
- polygon = new google_1.maps.Polygon({
1561
- paths: zone_1.polygon.split(';').map(function (coords) { return ({
1562
- lat: (0, lodash_1.toNumber)(coords.split(',')[1]),
1563
- lng: (0, lodash_1.toNumber)(coords.split(',')[0])
1564
- }); })
1565
- });
1566
- if (google_1.maps.geometry.poly.containsLocation({ lat: Number(lat), lng: Number(lng) }, polygon)) {
1567
- insideZones.push(zone_1.slug);
1568
- }
1569
- }
1570
- return [2, insideZones];
1571
- case 4:
1572
- error_14 = _a.sent();
1573
- if (process.env.NODE_ENV !== 'production')
1574
- console.log('error while fetching zones', error_14);
1575
- return [2, []];
1576
- case 5: return [2];
1577
- }
1578
- });
1579
- }); };
1580
- this._pricingByQuery = function (query) { return __awaiter(_this, void 0, void 0, function () {
1581
- var fetchData, resJson, error_15;
1582
- return __generator(this, function (_a) {
1583
- switch (_a.label) {
1584
- case 0:
1585
- _a.trys.push([0, 3, , 4]);
1586
- return [4, (0, isomorphic_unfetch_1.default)("".concat(this._api, "/services/pricing/byQuery"), {
1587
- method: 'POST',
1588
- headers: {
1589
- authorization: "Bearer ".concat(this._token),
1590
- 'Content-Type': 'application/json'
1591
- },
1592
- body: JSON.stringify({ query: query })
1593
- })];
1594
- case 1:
1595
- fetchData = _a.sent();
1596
- return [4, fetchData.json()];
1597
- case 2:
1598
- resJson = _a.sent();
1599
- return [2, resJson.data];
1600
- case 3:
1601
- error_15 = _a.sent();
1602
- throw error_15;
1603
- case 4: return [2];
1604
- }
1605
- });
1606
- }); };
1607
- this._buyFromForm = function (form) { return __awaiter(_this, void 0, void 0, function () {
1608
- var fetchData, resJson, error_16;
1609
- return __generator(this, function (_a) {
1610
- switch (_a.label) {
1611
- case 0:
1612
- _a.trys.push([0, 3, , 4]);
1613
- return [4, (0, isomorphic_unfetch_1.default)("".concat(this._api, "/services/buy/fromForm"), {
1614
- method: 'POST',
1615
- headers: {
1616
- authorization: "Bearer ".concat(this._token),
1617
- 'Content-Type': 'application/json'
1618
- },
1619
- body: JSON.stringify(form)
1620
- })];
1621
- case 1:
1622
- fetchData = _a.sent();
1623
- return [4, fetchData.json()];
1624
- case 2:
1625
- resJson = _a.sent();
1626
- if (!!resJson.error) {
1627
- return [2, false];
1628
- }
1629
- return [2, true];
1630
- case 3:
1631
- error_16 = _a.sent();
1632
- throw error_16;
1633
- case 4: return [2];
1634
- }
1635
- });
1636
- }); };
1637
- this._getSearchServices = function () { return __awaiter(_this, void 0, void 0, function () {
1638
- var fetchData, resJson, space, error_17;
1639
- return __generator(this, function (_a) {
1640
- switch (_a.label) {
1641
- case 0:
1642
- _a.trys.push([0, 3, , 4]);
1643
- return [4, (0, isomorphic_unfetch_1.default)("".concat(this._api, "/space"), {
1644
- method: 'GET',
1645
- headers: {
1646
- authorization: "Bearer ".concat(this._token),
1647
- 'Content-Type': 'application/json'
1648
- }
1649
- })];
1650
- case 1:
1651
- fetchData = _a.sent();
1652
- return [4, fetchData.json()];
1653
- case 2:
1654
- resJson = _a.sent();
1655
- if (!!resJson.error) {
1656
- return [2, []];
1657
- }
1658
- space = resJson.data;
1659
- if (!!!space || !!!space._space)
1660
- return [2, []];
1661
- return [2, space._space.external_services.filter(function (s) { return s.type === 'index'; })];
1662
- case 3:
1663
- error_17 = _a.sent();
1664
- throw error_17;
1665
- case 4: return [2];
1666
- }
1667
- });
1668
- }); };
1669
- this.services = {
1670
- pricingByQuery: this._pricingByQuery,
1671
- buy: {
1672
- fromForm: this._buyFromForm
1673
- },
1674
- searchServices: this._getSearchServices
1675
- };
1676
- this._getAllCatalogues = function (locale) { return __awaiter(_this, void 0, void 0, function () {
1677
- var fetchData, responseData;
1678
- return __generator(this, function (_a) {
1679
- switch (_a.label) {
1680
- case 0: return [4, (0, isomorphic_unfetch_1.default)("".concat(this._api, "/catalogues"), {
1681
- method: 'GET',
1682
- headers: {
1683
- Authorization: "Bearer ".concat(this._token),
1684
- 'x-gng-ecomm-locale': locale
1685
- }
1686
- })];
1687
- case 1:
1688
- fetchData = _a.sent();
1689
- return [4, fetchData.json()];
1690
- case 2:
1691
- responseData = _a.sent();
1692
- if (responseData.status !== 200)
1693
- throw new Error(JSON.stringify({ status: responseData.status, error: responseData.error }));
1694
- return [2, responseData.data.filter(function (catalogue) { return !!!catalogue.draft; })];
1695
- }
1696
- });
1697
- }); };
1698
- this._getCatalogueBySlug = function (slug, locale) { return __awaiter(_this, void 0, void 0, function () {
1699
- var fetchData, responseData;
1700
- return __generator(this, function (_a) {
1701
- switch (_a.label) {
1702
- case 0: return [4, (0, isomorphic_unfetch_1.default)("".concat(this._api, "/catalogues/").concat(slug), {
1703
- method: 'GET',
1704
- headers: {
1705
- Authorization: "Bearer ".concat(this._token),
1706
- 'x-gng-ecomm-locale': locale
1707
- }
1708
- })];
1709
- case 1:
1710
- fetchData = _a.sent();
1711
- return [4, fetchData.json()];
1712
- case 2:
1713
- responseData = _a.sent();
1714
- if (responseData.status !== 200)
1715
- throw new Error(JSON.stringify({ status: responseData.status, error: responseData.error }));
1716
- return [2, responseData.data];
1717
- }
1718
- });
1719
- }); };
1720
- this.catalogues = {
1721
- getAll: this._getAllCatalogues,
1722
- getOne: this._getCatalogueBySlug
1723
- };
1724
- this.saveCustomerToMailchimpList = function (customerEmail, listID, mergeFields, tags) { return __awaiter(_this, void 0, void 0, function () {
1725
- var saved, responseData, e_9;
1726
- return __generator(this, function (_a) {
1727
- switch (_a.label) {
1728
- case 0:
1729
- _a.trys.push([0, 3, , 4]);
1730
- return [4, (0, isomorphic_unfetch_1.default)("".concat(this._api, "/marketing/mailchimp/updateOrCreateCustomer"), {
1731
- method: 'POST',
1732
- headers: {
1733
- Authorization: "Bearer ".concat(this._token),
1734
- 'Content-Type': 'application/json'
1735
- },
1736
- body: JSON.stringify(__assign(__assign({ email: customerEmail, listID: listID }, (!!mergeFields ? { mergeFields: mergeFields } : {})), (!!tags ? { tags: tags } : {})))
1737
- })];
1738
- case 1:
1739
- saved = _a.sent();
1740
- return [4, saved.json()];
1741
- case 2:
1742
- responseData = _a.sent();
1743
- if (responseData.status !== 200)
1744
- throw new Error(JSON.stringify({ status: responseData.status, error: responseData.error }));
1745
- return [2, true];
1746
- case 3:
1747
- e_9 = _a.sent();
1748
- console.log('error on saving customer to mailchimp list: ', e_9.toString());
1749
- return [2, false];
1750
- case 4: return [2];
1751
- }
1752
- });
1753
- }); };
1754
- this.getProductListForSitemap = function () { return __awaiter(_this, void 0, void 0, function () {
1755
- var fetchData, result, e_10;
1756
- return __generator(this, function (_a) {
1757
- switch (_a.label) {
1758
- case 0:
1759
- _a.trys.push([0, 3, , 4]);
1760
- return [4, (0, isomorphic_unfetch_1.default)("".concat(this._api, "/analytics/sitmap_data"), {
1761
- method: 'GET',
1762
- headers: {
1763
- authorization: "Bearer ".concat(this._token),
1764
- 'Content-Type': 'application/json'
1765
- }
1766
- })];
1767
- case 1:
1768
- fetchData = _a.sent();
1769
- return [4, fetchData.json()];
1770
- case 2:
1771
- result = _a.sent();
1772
- if (!!fetchData.status && fetchData.status !== 200)
1773
- throw "".concat(result.data);
1774
- return [2, result.data];
1775
- case 3:
1776
- e_10 = _a.sent();
1777
- console.log('error fetching sitemap data: ', e_10.toString());
1778
- return [2, e_10.toString()];
1779
- case 4: return [2];
1780
- }
1781
- });
1782
- }); };
1783
- this._api = '';
1784
- this._imgPath = '';
1785
- this._token = '';
1786
- this._userToken = '';
1787
- this._url = '';
1788
- this._org = '';
1789
- this._storeData = null;
1790
- this._wishlist = null;
1791
- this._stockNotif = null;
1792
- }
1793
- return SDK;
1794
- }());
1795
- exports.default = SDK;
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
+ var __rest = (this && this.__rest) || function (s, e) {
50
+ var t = {};
51
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
52
+ t[p] = s[p];
53
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
54
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
55
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
56
+ t[p[i]] = s[p[i]];
57
+ }
58
+ return t;
59
+ };
60
+ var __importDefault = (this && this.__importDefault) || function (mod) {
61
+ return (mod && mod.__esModule) ? mod : { "default": mod };
62
+ };
63
+ Object.defineProperty(exports, "__esModule", { value: true });
64
+ var isomorphic_unfetch_1 = __importDefault(require("isomorphic-unfetch"));
65
+ var image_1 = __importDefault(require("./lib/models/image"));
66
+ var wishlist_1 = __importDefault(require("./lib/models/wishlist"));
67
+ var stockNotification_1 = __importDefault(require("./lib/models/stockNotification"));
68
+ var Product_1 = __importDefault(require("addio-admin-sdk/dist/lib/Product"));
69
+ var js_cookie_1 = __importDefault(require("js-cookie"));
70
+ var g2_1 = require("addio-admin-sdk/dist/rules/GR/utils/g2");
71
+ var functions_1 = require("./utils/functions");
72
+ var zones_1 = require("addio-admin-sdk/dist/utils/zones");
73
+ var lodash_1 = require("lodash");
74
+ var functions_2 = require("./utils/functions");
75
+ var data_1 = require("addio-admin-sdk/dist/utils/data");
76
+ var moment_1 = __importDefault(require("moment"));
77
+ var object_1 = require("addio-admin-sdk/dist/utils/object");
78
+ var SDK = (function () {
79
+ function SDK() {
80
+ var _this = this;
81
+ this.init = function (sdk_config) { return __awaiter(_this, void 0, void 0, function () {
82
+ return __generator(this, function (_a) {
83
+ this._api = sdk_config.api;
84
+ this._token = sdk_config.token;
85
+ this._url = sdk_config.url;
86
+ this._org = sdk_config.org;
87
+ this._userToken = !!sdk_config.userToken ? sdk_config.userToken : '';
88
+ this._storeData = null;
89
+ return [2];
90
+ });
91
+ }); };
92
+ this.getAPIInfos = function () { return ({
93
+ api: _this._api,
94
+ token: _this._token,
95
+ userToken: _this._userToken,
96
+ org: _this._org
97
+ }); };
98
+ this.initWishlist = function (wishlist) { return __awaiter(_this, void 0, void 0, function () {
99
+ return __generator(this, function (_a) {
100
+ switch (_a.label) {
101
+ case 0:
102
+ this._wishlist = new wishlist_1.default(wishlist, this._api, this._token, this._userToken, this.setUserToken);
103
+ return [4, this._wishlist.getFromDatabase(wishlist)];
104
+ case 1: return [2, _a.sent()];
105
+ }
106
+ });
107
+ }); };
108
+ this.initStockNotif = function (stockNotif) { return __awaiter(_this, void 0, void 0, function () {
109
+ return __generator(this, function (_a) {
110
+ switch (_a.label) {
111
+ case 0:
112
+ this._stockNotif = new stockNotification_1.default(stockNotif, this._api, this._token, this._userToken, this.setUserToken);
113
+ return [4, this._stockNotif.getFromDatabase(stockNotif)];
114
+ case 1: return [2, _a.sent()];
115
+ }
116
+ });
117
+ }); };
118
+ this.initStoreData = function (defaultData) { return __awaiter(_this, void 0, void 0, function () {
119
+ var fetchData, responseData;
120
+ return __generator(this, function (_a) {
121
+ switch (_a.label) {
122
+ case 0:
123
+ if (!!defaultData) {
124
+ this._storeData = defaultData;
125
+ return [2];
126
+ }
127
+ return [4, (0, isomorphic_unfetch_1.default)("".concat(this._api, "/store"), {
128
+ method: 'GET',
129
+ headers: {
130
+ authorization: "Bearer ".concat(this._token),
131
+ 'Content-Type': 'application/json'
132
+ }
133
+ })];
134
+ case 1:
135
+ fetchData = _a.sent();
136
+ return [4, fetchData.json()];
137
+ case 2:
138
+ responseData = _a.sent();
139
+ if (responseData.status !== 200) {
140
+ throw new Error(JSON.stringify({ status: responseData.status, error: responseData.error }));
141
+ }
142
+ this._storeData = responseData.data;
143
+ return [2, this._storeData];
144
+ }
145
+ });
146
+ }); };
147
+ this.shouldShowFixedPromoBanner = function (fixedPromoBannerData) {
148
+ if (!!!fixedPromoBannerData.is_active) {
149
+ return false;
150
+ }
151
+ if (!!fixedPromoBannerData.active_between_dates && !!fixedPromoBannerData.active_between_dates.length) {
152
+ var date = fixedPromoBannerData.active_between_dates.some(function (date) {
153
+ return (0, moment_1.default)().isBetween((0, moment_1.default)((0, data_1.formatDate)(date.start)), (0, moment_1.default)((0, data_1.formatDate)(date.end)), 'days', '[]');
154
+ });
155
+ return !!date;
156
+ }
157
+ return true;
158
+ };
159
+ this.getInventoryItem = function (sku, locale) { return __awaiter(_this, void 0, void 0, function () {
160
+ var fetchData, responseData;
161
+ return __generator(this, function (_a) {
162
+ switch (_a.label) {
163
+ case 0: return [4, (0, isomorphic_unfetch_1.default)("".concat(this._api, "/inventory/").concat(encodeURIComponent(sku)), {
164
+ method: 'GET',
165
+ headers: {
166
+ Authorization: "Bearer ".concat(this._token),
167
+ 'x-gng-ecomm-locale': locale
168
+ }
169
+ })];
170
+ case 1:
171
+ fetchData = _a.sent();
172
+ return [4, fetchData.json()];
173
+ case 2:
174
+ responseData = _a.sent();
175
+ if (responseData.status !== 200)
176
+ throw new Error(JSON.stringify({ status: responseData.status, error: responseData.error }));
177
+ return [2, responseData.data];
178
+ }
179
+ });
180
+ }); };
181
+ this.getFullInventory = function (locale) { return __awaiter(_this, void 0, void 0, function () {
182
+ var fetchData, responseData;
183
+ return __generator(this, function (_a) {
184
+ switch (_a.label) {
185
+ case 0: return [4, (0, isomorphic_unfetch_1.default)("".concat(this._api, "/inventory"), {
186
+ method: 'GET',
187
+ headers: {
188
+ Authorization: "Bearer ".concat(this._token),
189
+ 'x-gng-ecomm-locale': locale
190
+ }
191
+ })];
192
+ case 1:
193
+ fetchData = _a.sent();
194
+ return [4, fetchData.json()];
195
+ case 2:
196
+ responseData = _a.sent();
197
+ if (responseData.status !== 200)
198
+ throw new Error(JSON.stringify({ status: responseData.status, error: responseData.error }));
199
+ return [2, responseData.data];
200
+ }
201
+ });
202
+ }); };
203
+ this.inventory = {
204
+ getFullInventory: this.getFullInventory,
205
+ getInventoryItem: this.getInventoryItem
206
+ };
207
+ this.setUserToken = function (token) {
208
+ _this._userToken = token;
209
+ localStorage.setItem('userToken', token);
210
+ js_cookie_1.default.set('userToken', token, { sameSite: 'strict', secure: true });
211
+ };
212
+ this.loginUserWithFacebook = function (fb) { return __awaiter(_this, void 0, void 0, function () {
213
+ var email, id, name, fetchData, responseData;
214
+ return __generator(this, function (_a) {
215
+ switch (_a.label) {
216
+ case 0:
217
+ email = fb.email, id = fb.id, name = fb.name;
218
+ return [4, (0, isomorphic_unfetch_1.default)("".concat(this._api, "/signinwithfacebook"), {
219
+ method: 'POST',
220
+ headers: {
221
+ authorization: "Bearer ".concat(this._token),
222
+ 'Content-Type': 'application/json'
223
+ },
224
+ body: JSON.stringify({ email: email, userID: id, name: name })
225
+ })];
226
+ case 1:
227
+ fetchData = _a.sent();
228
+ return [4, fetchData.json()];
229
+ case 2:
230
+ responseData = _a.sent();
231
+ if (responseData.status !== 200) {
232
+ throw { status: responseData.status, error: responseData.error };
233
+ }
234
+ try {
235
+ if (!!!responseData.data.userData) {
236
+ throw {
237
+ status: responseData.status,
238
+ error: 'user_not_found'
239
+ };
240
+ }
241
+ if (!!responseData.data.cartData) {
242
+ localStorage.setItem("".concat(this._org, "__cart"), responseData.data.cartData.id);
243
+ }
244
+ if (responseData.token)
245
+ this.setUserToken(responseData.token);
246
+ return [2, { userData: responseData.data.userData, cart: responseData.data.cartData }];
247
+ }
248
+ catch (err) {
249
+ return [2, err.toString()];
250
+ }
251
+ return [2];
252
+ }
253
+ });
254
+ }); };
255
+ this.anonymousResetPassword = function (locale, id, oldPassword, newPassword, confirmPassword) { return __awaiter(_this, void 0, void 0, function () {
256
+ var fetchData, responseData, error_1;
257
+ return __generator(this, function (_a) {
258
+ switch (_a.label) {
259
+ case 0:
260
+ _a.trys.push([0, 3, , 4]);
261
+ return [4, (0, isomorphic_unfetch_1.default)("".concat(this._api, "/anonymousResetPassword"), {
262
+ method: 'POST',
263
+ headers: {
264
+ authorization: "Bearer ".concat(this._token),
265
+ 'Content-Type': 'application/json',
266
+ 'x-gng-ecomm-locale': locale
267
+ },
268
+ body: JSON.stringify({
269
+ id: id,
270
+ oldPassword: oldPassword,
271
+ newPassword: newPassword,
272
+ confirmPassword: confirmPassword
273
+ })
274
+ })];
275
+ case 1:
276
+ fetchData = _a.sent();
277
+ return [4, fetchData.json()];
278
+ case 2:
279
+ responseData = _a.sent();
280
+ if (responseData.status !== 200) {
281
+ return [2, { status: responseData.status, error: responseData.error }];
282
+ }
283
+ return [2, { status: responseData.status, data: { done: true } }];
284
+ case 3:
285
+ error_1 = _a.sent();
286
+ console.log('error dans le catch du sdk: ', typeof error_1, error_1);
287
+ return [2, {
288
+ status: 400,
289
+ error: typeof error_1 === 'string' ? error_1 : error_1.toString()
290
+ }];
291
+ case 4: return [2];
292
+ }
293
+ });
294
+ }); };
295
+ this.loginUser = function (locale, email, password, keepCart, isClerk) {
296
+ if (keepCart === void 0) { keepCart = false; }
297
+ if (isClerk === void 0) { isClerk = false; }
298
+ return __awaiter(_this, void 0, void 0, function () {
299
+ var fetchData, responseData, cartData, shouldResetCartData, currentCartInLocalStorage;
300
+ return __generator(this, function (_a) {
301
+ switch (_a.label) {
302
+ case 0: return [4, (0, isomorphic_unfetch_1.default)("".concat(this._api, "/signin"), {
303
+ method: 'POST',
304
+ headers: {
305
+ authorization: "Bearer ".concat(this._token),
306
+ 'Content-Type': 'application/json',
307
+ 'x-gng-ecomm-locale': locale
308
+ },
309
+ body: JSON.stringify({ email: email, password: password, isClerk: isClerk })
310
+ })];
311
+ case 1:
312
+ fetchData = _a.sent();
313
+ return [4, fetchData.json()];
314
+ case 2:
315
+ responseData = _a.sent();
316
+ if (responseData.status !== 200) {
317
+ throw { status: responseData.status, error: responseData.error };
318
+ }
319
+ try {
320
+ if (!!!responseData.data.userData) {
321
+ throw {
322
+ status: responseData.status,
323
+ error: 'user_not_found'
324
+ };
325
+ }
326
+ cartData = responseData.data.cartData;
327
+ shouldResetCartData = !!cartData && !!cartData.clerk_id && !!!isClerk;
328
+ currentCartInLocalStorage = !!shouldResetCartData || !!!keepCart ? false : localStorage.getItem("".concat(this._org, "__cart"));
329
+ if (!!cartData && !!!currentCartInLocalStorage) {
330
+ localStorage.setItem("".concat(this._org, "__cart"), responseData.data.cartData.id);
331
+ }
332
+ if (responseData.token)
333
+ this.setUserToken(responseData.token);
334
+ return [2, {
335
+ userData: responseData.data.userData,
336
+ cart: shouldResetCartData ? null : cartData
337
+ }];
338
+ }
339
+ catch (err) {
340
+ return [2, err.toString()];
341
+ }
342
+ return [2];
343
+ }
344
+ });
345
+ });
346
+ };
347
+ this.loginUserWithID = function (locale, id, password, keepCart, isClerk) {
348
+ if (keepCart === void 0) { keepCart = false; }
349
+ if (isClerk === void 0) { isClerk = false; }
350
+ return __awaiter(_this, void 0, void 0, function () {
351
+ var fetchData, responseData, currentCartInLocalStorage;
352
+ return __generator(this, function (_a) {
353
+ switch (_a.label) {
354
+ case 0: return [4, (0, isomorphic_unfetch_1.default)("".concat(this._api, "/signinwithid"), {
355
+ method: 'POST',
356
+ headers: {
357
+ authorization: "Bearer ".concat(this._token),
358
+ 'Content-Type': 'application/json',
359
+ 'x-gng-ecomm-locale': locale
360
+ },
361
+ body: JSON.stringify({ id: id, password: password, isClerk: isClerk })
362
+ })];
363
+ case 1:
364
+ fetchData = _a.sent();
365
+ return [4, fetchData.json()];
366
+ case 2:
367
+ responseData = _a.sent();
368
+ if (responseData.status !== 200) {
369
+ throw { status: responseData.status, error: responseData.error };
370
+ }
371
+ if (!!!responseData.data.userData) {
372
+ throw {
373
+ status: responseData.status,
374
+ error: 'user_not_found'
375
+ };
376
+ }
377
+ currentCartInLocalStorage = !!!keepCart ? false : localStorage.getItem("".concat(this._org, "__cart"));
378
+ if (!!responseData.data.cartData && !!!currentCartInLocalStorage) {
379
+ localStorage.setItem("".concat(this._org, "__cart"), responseData.data.cartData.id);
380
+ }
381
+ if (responseData.token)
382
+ this.setUserToken(responseData.token);
383
+ return [2, { userData: responseData.data.userData, cart: responseData.data.cartData }];
384
+ }
385
+ });
386
+ });
387
+ };
388
+ this.checkG2ForCustomer = function (id, currentCustomer, customerGroups) { return __awaiter(_this, void 0, void 0, function () {
389
+ var fetchData, G2RequestRes, allG2Customers, customerToCheck, customerToCreate, e_1;
390
+ return __generator(this, function (_a) {
391
+ switch (_a.label) {
392
+ case 0:
393
+ _a.trys.push([0, 3, , 4]);
394
+ return [4, (0, isomorphic_unfetch_1.default)("".concat(this._api, "/services/g2/customers/").concat(id), {
395
+ method: 'GET',
396
+ headers: {
397
+ authorization: "Bearer ".concat(this._token),
398
+ 'Content-Type': 'application/json'
399
+ }
400
+ })];
401
+ case 1:
402
+ fetchData = _a.sent();
403
+ return [4, fetchData.json()];
404
+ case 2:
405
+ G2RequestRes = _a.sent();
406
+ if (!!fetchData.status && fetchData.status !== 200)
407
+ throw "".concat(fetchData.status);
408
+ if (!!!G2RequestRes || !!!G2RequestRes.length)
409
+ throw 'no data';
410
+ allG2Customers = G2RequestRes;
411
+ customerToCheck = allG2Customers[0];
412
+ if (!!(0, object_1.recursiveCheckObject)(customerToCheck, 'client.noClient') && customerToCheck.client.noClient !== id)
413
+ throw 'no data';
414
+ customerToCreate = (0, g2_1.transformG2CustomerToCustomer)(customerToCheck, currentCustomer, customerGroups);
415
+ return [2, customerToCreate];
416
+ case 3:
417
+ e_1 = _a.sent();
418
+ console.log('error on fetching G2 customer: ', e_1.toString());
419
+ return [2];
420
+ case 4: return [2];
421
+ }
422
+ });
423
+ }); };
424
+ this.createProCustomer = function (customer) { return __awaiter(_this, void 0, void 0, function () {
425
+ var fetchData, result, e_2;
426
+ return __generator(this, function (_a) {
427
+ switch (_a.label) {
428
+ case 0:
429
+ _a.trys.push([0, 3, , 4]);
430
+ return [4, (0, isomorphic_unfetch_1.default)("".concat(this._api, "/user/createProWithId"), {
431
+ method: 'POST',
432
+ headers: {
433
+ authorization: "Bearer ".concat(this._token),
434
+ 'Content-Type': 'application/json'
435
+ },
436
+ body: JSON.stringify({ customer: customer })
437
+ })];
438
+ case 1:
439
+ fetchData = _a.sent();
440
+ return [4, fetchData.json()];
441
+ case 2:
442
+ result = _a.sent();
443
+ if (!!fetchData.status && fetchData.status !== 200)
444
+ throw "".concat(result.data);
445
+ return [2, true];
446
+ case 3:
447
+ e_2 = _a.sent();
448
+ console.log('error on creating G2 customer: ', e_2.toString());
449
+ return [2, e_2.toString()];
450
+ case 4: return [2];
451
+ }
452
+ });
453
+ }); };
454
+ this.fetchCustomPriceList = function (customerID, isPA) {
455
+ if (isPA === void 0) { isPA = false; }
456
+ return __awaiter(_this, void 0, void 0, function () {
457
+ var id, g2PriceListQuery, prices, e_3;
458
+ return __generator(this, function (_a) {
459
+ switch (_a.label) {
460
+ case 0:
461
+ _a.trys.push([0, 3, , 4]);
462
+ id = !!isPA ? "".concat(customerID, "PA") : customerID;
463
+ return [4, (0, isomorphic_unfetch_1.default)("".concat(this._api, "/services/g2/customers/").concat(id, "/customPrices"), {
464
+ method: 'POST',
465
+ headers: {
466
+ authorization: "Bearer ".concat(this._token),
467
+ 'Content-Type': 'application/json'
468
+ }
469
+ })];
470
+ case 1:
471
+ g2PriceListQuery = _a.sent();
472
+ return [4, g2PriceListQuery.json()];
473
+ case 2:
474
+ prices = _a.sent();
475
+ if (!!g2PriceListQuery.status && g2PriceListQuery.status !== 200)
476
+ throw "Error - ".concat(g2PriceListQuery.status);
477
+ if (!!!prices || !!!prices.length)
478
+ throw 'Error - no data';
479
+ return [2, prices];
480
+ case 3:
481
+ e_3 = _a.sent();
482
+ console.log('error on fetching customer from G2: ', e_3);
483
+ return [2];
484
+ case 4: return [2];
485
+ }
486
+ });
487
+ });
488
+ };
489
+ this.validateAccount = function (code) { return __awaiter(_this, void 0, void 0, function () {
490
+ var fetchData, responseData;
491
+ return __generator(this, function (_a) {
492
+ switch (_a.label) {
493
+ case 0: return [4, (0, isomorphic_unfetch_1.default)("".concat(this._api, "/user/validateEmail"), {
494
+ method: 'POST',
495
+ headers: {
496
+ authorization: "Bearer ".concat(this._token),
497
+ 'Content-Type': 'application/json',
498
+ 'x-gng-ecomm-token': this._userToken
499
+ },
500
+ body: JSON.stringify({ code: code })
501
+ })];
502
+ case 1:
503
+ fetchData = _a.sent();
504
+ return [4, fetchData.json()];
505
+ case 2:
506
+ responseData = _a.sent();
507
+ if (responseData.status !== 200) {
508
+ throw new Error(JSON.stringify({ status: responseData.status, error: responseData.error }));
509
+ }
510
+ if (!!!responseData.data.userData) {
511
+ throw new Error(JSON.stringify({ status: responseData.status, error: 'User not sent in request.' }));
512
+ }
513
+ if (responseData.token)
514
+ this.setUserToken(responseData.token);
515
+ return [2, responseData.data.userData];
516
+ }
517
+ });
518
+ }); };
519
+ this.logout = function () {
520
+ _this.setUserToken('');
521
+ localStorage.removeItem("".concat(_this._org, "__cart"));
522
+ localStorage.removeItem('userLogged');
523
+ localStorage.removeItem('isPro');
524
+ localStorage.removeItem('foundInG2');
525
+ localStorage.removeItem('customPriceList');
526
+ localStorage.removeItem('lastCustomPriceFetch');
527
+ localStorage.removeItem('userToken');
528
+ localStorage.removeItem('wishlist');
529
+ localStorage.removeItem('stockNotification');
530
+ js_cookie_1.default.remove('userToken', { expires: new Date(0) });
531
+ };
532
+ this.registerUser = function (locale, userData, password) { return __awaiter(_this, void 0, void 0, function () {
533
+ var fetchData, responseData;
534
+ return __generator(this, function (_a) {
535
+ switch (_a.label) {
536
+ case 0: return [4, (0, isomorphic_unfetch_1.default)("".concat(this._api, "/register"), {
537
+ method: 'PUT',
538
+ headers: {
539
+ Authorization: "Bearer ".concat(this._token),
540
+ 'Content-Type': 'application/json',
541
+ 'x-gng-ecomm-locale': locale
542
+ },
543
+ body: JSON.stringify({ userData: userData, password: password })
544
+ })];
545
+ case 1:
546
+ fetchData = _a.sent();
547
+ if (fetchData.status == 200)
548
+ return [2, { status: 200, error: '' }];
549
+ return [4, fetchData.json()];
550
+ case 2:
551
+ responseData = _a.sent();
552
+ return [2, { status: responseData.status, error: responseData.error }];
553
+ }
554
+ });
555
+ }); };
556
+ this.getUser = function (keepTempHash) { return __awaiter(_this, void 0, void 0, function () {
557
+ var token, localToken, fetchData, responseData, _a, temp_hash, rest;
558
+ return __generator(this, function (_b) {
559
+ switch (_b.label) {
560
+ case 0:
561
+ token = this._userToken;
562
+ if (!!!token) {
563
+ localToken = localStorage.getItem('userToken');
564
+ if (!!localToken) {
565
+ token = localToken;
566
+ }
567
+ }
568
+ return [4, (0, isomorphic_unfetch_1.default)("".concat(this._api, "/user/get"), {
569
+ method: 'GET',
570
+ headers: {
571
+ authorization: "Bearer ".concat(this._token),
572
+ 'Content-Type': 'application/json',
573
+ 'x-gng-ecomm-token': token
574
+ }
575
+ })];
576
+ case 1:
577
+ fetchData = _b.sent();
578
+ return [4, fetchData.json()];
579
+ case 2:
580
+ responseData = _b.sent();
581
+ if (responseData.status !== 200) {
582
+ throw new Error(JSON.stringify({ status: responseData.status, error: responseData.error }));
583
+ }
584
+ if (!!!responseData.data.userData) {
585
+ throw new Error(JSON.stringify({ status: responseData.status, error: 'User not sent in request.' }));
586
+ }
587
+ if (responseData.token)
588
+ this.setUserToken(responseData.token);
589
+ _a = responseData.data.userData, temp_hash = _a.temp_hash, rest = __rest(_a, ["temp_hash"]);
590
+ return [2, __assign(__assign({}, rest), (!!keepTempHash ? { temp_hash: temp_hash } : {}))];
591
+ }
592
+ });
593
+ }); };
594
+ this.saveUser = function (userData) { return __awaiter(_this, void 0, void 0, function () {
595
+ var fetchData, responseData;
596
+ return __generator(this, function (_a) {
597
+ switch (_a.label) {
598
+ case 0: return [4, (0, isomorphic_unfetch_1.default)("".concat(this._api, "/user/save"), {
599
+ method: 'POST',
600
+ headers: {
601
+ authorization: "Bearer ".concat(this._token),
602
+ 'Content-Type': 'application/json',
603
+ 'x-gng-ecomm-token': this._userToken
604
+ },
605
+ body: JSON.stringify({ userData: userData })
606
+ })];
607
+ case 1:
608
+ fetchData = _a.sent();
609
+ return [4, fetchData.json()];
610
+ case 2:
611
+ responseData = _a.sent();
612
+ if (responseData.status !== 200) {
613
+ throw new Error(JSON.stringify({ status: responseData.status, error: responseData.error }));
614
+ }
615
+ if (responseData.data !== 'done') {
616
+ throw new Error(JSON.stringify({ status: responseData.status, error: 'User not sent in response.' }));
617
+ }
618
+ if (responseData.token)
619
+ this.setUserToken(responseData.token);
620
+ return [2, true];
621
+ }
622
+ });
623
+ }); };
624
+ this.deleteUser = function () { return __awaiter(_this, void 0, void 0, function () {
625
+ var fetchData, responseData;
626
+ return __generator(this, function (_a) {
627
+ switch (_a.label) {
628
+ case 0: return [4, (0, isomorphic_unfetch_1.default)("".concat(this._api, "/user/delete"), {
629
+ method: 'GET',
630
+ headers: {
631
+ authorization: "Bearer ".concat(this._token),
632
+ 'x-gng-ecomm-token': this._userToken
633
+ }
634
+ })];
635
+ case 1:
636
+ fetchData = _a.sent();
637
+ return [4, fetchData.json()];
638
+ case 2:
639
+ responseData = _a.sent();
640
+ if (responseData.status !== 200) {
641
+ return [2, false];
642
+ }
643
+ return [2, true];
644
+ }
645
+ });
646
+ }); };
647
+ this.getOrders = function () { return __awaiter(_this, void 0, void 0, function () {
648
+ var fetchData, responseData;
649
+ return __generator(this, function (_a) {
650
+ switch (_a.label) {
651
+ case 0: return [4, (0, isomorphic_unfetch_1.default)("".concat(this._api, "/user/orders"), {
652
+ method: 'GET',
653
+ headers: {
654
+ authorization: "Bearer ".concat(this._token),
655
+ 'Content-Type': 'application/json',
656
+ 'x-gng-ecomm-token': this._userToken
657
+ }
658
+ })];
659
+ case 1:
660
+ fetchData = _a.sent();
661
+ return [4, fetchData.json()];
662
+ case 2:
663
+ responseData = (_a.sent());
664
+ if (responseData.status !== 200) {
665
+ return [2, responseData.data];
666
+ }
667
+ return [2, responseData.data];
668
+ }
669
+ });
670
+ }); };
671
+ this.killRepCart = function (hashed_cart_id) { return __awaiter(_this, void 0, void 0, function () {
672
+ var fetchData, responseData, error_2;
673
+ return __generator(this, function (_a) {
674
+ switch (_a.label) {
675
+ case 0:
676
+ _a.trys.push([0, 3, , 4]);
677
+ return [4, (0, isomorphic_unfetch_1.default)("".concat(this._api, "/user/killRepCart/").concat(encodeURIComponent(hashed_cart_id)), {
678
+ method: 'GET',
679
+ headers: {
680
+ authorization: "Bearer ".concat(this._token),
681
+ 'Content-Type': 'application/json',
682
+ 'x-gng-ecomm-token': this._userToken
683
+ }
684
+ })];
685
+ case 1:
686
+ fetchData = _a.sent();
687
+ return [4, fetchData.json()];
688
+ case 2:
689
+ responseData = (_a.sent());
690
+ if (responseData.status !== 200) {
691
+ return [2, responseData.data];
692
+ }
693
+ return [2, responseData.data];
694
+ case 3:
695
+ error_2 = _a.sent();
696
+ console.log(error_2);
697
+ return [2, ''];
698
+ case 4: return [2];
699
+ }
700
+ });
701
+ }); };
702
+ this.getOrder = function (orderID, token) { return __awaiter(_this, void 0, void 0, function () {
703
+ var fetchData, responseData, error_3;
704
+ return __generator(this, function (_a) {
705
+ switch (_a.label) {
706
+ case 0:
707
+ _a.trys.push([0, 3, , 4]);
708
+ return [4, (0, isomorphic_unfetch_1.default)("".concat(this._api, "/user/order/").concat(orderID), {
709
+ method: 'POST',
710
+ headers: {
711
+ authorization: "Bearer ".concat(this._token),
712
+ 'Content-Type': 'application/json',
713
+ 'x-gng-ecomm-token': this._userToken
714
+ },
715
+ body: JSON.stringify({ orderToken: token })
716
+ })];
717
+ case 1:
718
+ fetchData = _a.sent();
719
+ return [4, fetchData.json()];
720
+ case 2:
721
+ responseData = (_a.sent());
722
+ if (responseData.status !== 200) {
723
+ return [2, responseData.data];
724
+ }
725
+ return [2, responseData.data];
726
+ case 3:
727
+ error_3 = _a.sent();
728
+ console.log(error_3);
729
+ return [2, ''];
730
+ case 4: return [2];
731
+ }
732
+ });
733
+ }); };
734
+ this.changeProfilePicture = function (file) { return __awaiter(_this, void 0, void 0, function () {
735
+ var fetchData, responseData;
736
+ return __generator(this, function (_a) {
737
+ switch (_a.label) {
738
+ case 0: return [4, (0, isomorphic_unfetch_1.default)("".concat(this._api, "/user/changeProfilePicture"), {
739
+ method: 'POST',
740
+ headers: {
741
+ authorization: "Bearer ".concat(this._token),
742
+ 'Content-Type': 'application/json',
743
+ 'x-gng-ecomm-token': this._userToken
744
+ },
745
+ body: JSON.stringify({
746
+ file: file
747
+ })
748
+ })];
749
+ case 1:
750
+ fetchData = _a.sent();
751
+ return [4, fetchData.json()];
752
+ case 2:
753
+ responseData = (_a.sent());
754
+ return [2, responseData.data];
755
+ }
756
+ });
757
+ }); };
758
+ this.changePassword = function (currentPassword, newPassword) { return __awaiter(_this, void 0, void 0, function () {
759
+ var fetchData, responseData;
760
+ return __generator(this, function (_a) {
761
+ switch (_a.label) {
762
+ case 0: return [4, (0, isomorphic_unfetch_1.default)("".concat(this._api, "/user/changePassword"), {
763
+ method: 'POST',
764
+ headers: {
765
+ authorization: "Bearer ".concat(this._token),
766
+ 'Content-Type': 'application/json',
767
+ 'x-gng-ecomm-token': this._userToken
768
+ },
769
+ body: JSON.stringify({ currentPassword: currentPassword, newPassword: newPassword })
770
+ })];
771
+ case 1:
772
+ fetchData = _a.sent();
773
+ return [4, fetchData.json()];
774
+ case 2:
775
+ responseData = (_a.sent());
776
+ if (responseData.status === 200)
777
+ return [2, responseData.data];
778
+ return [2, responseData.error];
779
+ }
780
+ });
781
+ }); };
782
+ this.sendResetPasswordEmail = function (locale, userEmail, forPro, withEmail, isTest) { return __awaiter(_this, void 0, void 0, function () {
783
+ var fetchData, responseData;
784
+ return __generator(this, function (_a) {
785
+ switch (_a.label) {
786
+ case 0: return [4, (0, isomorphic_unfetch_1.default)("".concat(this._api, "/user/sentForgotPasswordEmail"), {
787
+ method: 'POST',
788
+ headers: {
789
+ authorization: "Bearer ".concat(this._token),
790
+ 'Content-Type': 'application/json',
791
+ 'x-gng-ecomm-token': this._userToken,
792
+ 'x-gng-ecomm-locale': locale
793
+ },
794
+ body: JSON.stringify({ userEmail: userEmail, forPro: forPro, withEmail: withEmail, isTest: isTest })
795
+ })];
796
+ case 1:
797
+ fetchData = _a.sent();
798
+ return [4, fetchData.json()];
799
+ case 2:
800
+ responseData = (_a.sent());
801
+ if (responseData.status === 200)
802
+ return [2, responseData.data];
803
+ if (responseData.status === 403)
804
+ return [2, {
805
+ fr: "Plus d'un compte a \u00E9t\u00E9 trouv\u00E9 avec ".concat(withEmail ? 'ce courriel' : 'ce ID client', ". Veuillez contacter un administrateur pour proc\u00E9der."),
806
+ en: "More than one account was found with ".concat(withEmail ? 'this email' : 'this client ID', ". Please contact an administrator to proceed.")
807
+ }];
808
+ return [2, responseData.error];
809
+ }
810
+ });
811
+ }); };
812
+ this.sendApplicationEmail = function (locale, form) { return __awaiter(_this, void 0, void 0, function () {
813
+ var cvBase64, fetchData, responseData, error_4;
814
+ return __generator(this, function (_a) {
815
+ switch (_a.label) {
816
+ case 0:
817
+ _a.trys.push([0, 4, , 5]);
818
+ if (!!!form.cv)
819
+ return [2, {
820
+ error: "Couldn't find cv"
821
+ }];
822
+ return [4, (0, functions_2.toBase64)(form.cv)];
823
+ case 1:
824
+ cvBase64 = _a.sent();
825
+ if (typeof cvBase64 !== 'string') {
826
+ return [2, {
827
+ error: "Couldn't convert file to base64"
828
+ }];
829
+ }
830
+ return [4, (0, isomorphic_unfetch_1.default)("".concat(this._api, "/email/sendApplicationEmail"), {
831
+ method: 'POST',
832
+ headers: {
833
+ authorization: "Bearer ".concat(this._token),
834
+ 'Content-Type': 'application/json',
835
+ 'x-gng-ecomm-token': this._userToken,
836
+ 'x-gng-ecomm-locale': locale
837
+ },
838
+ body: JSON.stringify(__assign(__assign({}, form), { cv: cvBase64 }))
839
+ })];
840
+ case 2:
841
+ fetchData = _a.sent();
842
+ return [4, fetchData.json()];
843
+ case 3:
844
+ responseData = (_a.sent());
845
+ if (responseData.status === 200)
846
+ return [2, responseData.data];
847
+ return [2, responseData.error];
848
+ case 4:
849
+ error_4 = _a.sent();
850
+ return [2, 'error'];
851
+ case 5: return [2];
852
+ }
853
+ });
854
+ }); };
855
+ this.sendContactEmail = function (locale, form) { return __awaiter(_this, void 0, void 0, function () {
856
+ var fetchData, responseData;
857
+ return __generator(this, function (_a) {
858
+ switch (_a.label) {
859
+ case 0: return [4, (0, isomorphic_unfetch_1.default)("".concat(this._api, "/email/sendContactEmail"), {
860
+ method: 'POST',
861
+ headers: {
862
+ authorization: "Bearer ".concat(this._token),
863
+ 'Content-Type': 'application/json',
864
+ 'x-gng-ecomm-token': this._userToken,
865
+ 'x-gng-ecomm-locale': locale
866
+ },
867
+ body: JSON.stringify(form)
868
+ })];
869
+ case 1:
870
+ fetchData = _a.sent();
871
+ return [4, fetchData.json()];
872
+ case 2:
873
+ responseData = (_a.sent());
874
+ if (responseData.status === 200)
875
+ return [2, responseData.data];
876
+ return [2, responseData.error];
877
+ }
878
+ });
879
+ }); };
880
+ this.sendGenericOtherEmail = function (locale, form, templateId, to, replyTo) { return __awaiter(_this, void 0, void 0, function () {
881
+ var getSubjectByType, fetchData, responseData, error_5;
882
+ return __generator(this, function (_a) {
883
+ switch (_a.label) {
884
+ case 0:
885
+ getSubjectByType = function (type) {
886
+ switch (type) {
887
+ case 'confirmation_lawn_submission':
888
+ return { fr: 'Soumission gazon - Confirmation de réception', en: 'Lawn submission - Confirmation' };
889
+ default:
890
+ return undefined;
891
+ }
892
+ };
893
+ _a.label = 1;
894
+ case 1:
895
+ _a.trys.push([1, 4, , 5]);
896
+ return [4, (0, isomorphic_unfetch_1.default)("".concat(this._api, "/email/sendGenericOtherEmail"), {
897
+ method: 'POST',
898
+ headers: {
899
+ authorization: "Bearer ".concat(this._token),
900
+ 'Content-Type': 'application/json',
901
+ 'x-gng-ecomm-token': this._userToken,
902
+ 'x-gng-ecomm-locale': locale
903
+ },
904
+ body: JSON.stringify(__assign(__assign({}, (!!form ? { content: form } : {})), { subject: getSubjectByType(templateId), templateId: templateId, to: to, replyTo: replyTo }))
905
+ })];
906
+ case 2:
907
+ fetchData = _a.sent();
908
+ return [4, fetchData.json()];
909
+ case 3:
910
+ responseData = (_a.sent());
911
+ if (responseData.status === 200)
912
+ return [2, responseData.data];
913
+ return [2, responseData.error];
914
+ case 4:
915
+ error_5 = _a.sent();
916
+ console.log('error on sendGenericOtherEmail: ', error_5);
917
+ return [3, 5];
918
+ case 5: return [2];
919
+ }
920
+ });
921
+ }); };
922
+ this.sendServicePageEmail = function (locale, form, type, testEmail) { return __awaiter(_this, void 0, void 0, function () {
923
+ var attachments, rest, updatedAttachments, _i, _a, att, cvBase64, e_4, getSubjectByType, fetchData, responseData, e_5;
924
+ return __generator(this, function (_b) {
925
+ switch (_b.label) {
926
+ case 0:
927
+ attachments = form.attachments, rest = __rest(form, ["attachments"]);
928
+ updatedAttachments = [];
929
+ if (!!!attachments) return [3, 6];
930
+ _i = 0, _a = attachments;
931
+ _b.label = 1;
932
+ case 1:
933
+ if (!(_i < _a.length)) return [3, 6];
934
+ att = _a[_i];
935
+ _b.label = 2;
936
+ case 2:
937
+ _b.trys.push([2, 4, , 5]);
938
+ return [4, (0, functions_2.toBase64)(att)];
939
+ case 3:
940
+ cvBase64 = _b.sent();
941
+ updatedAttachments.push({ name: att.name, content: cvBase64 });
942
+ return [3, 5];
943
+ case 4:
944
+ e_4 = _b.sent();
945
+ console.log('error on converting to base64: ', e_4);
946
+ return [3, 5];
947
+ case 5:
948
+ _i++;
949
+ return [3, 1];
950
+ case 6:
951
+ getSubjectByType = function () {
952
+ switch (type) {
953
+ case 'admin_3D_plans':
954
+ return { fr: 'Plans 3D - Nouvelle demande', en: '3D plans - new request' };
955
+ case 'admin_vegetals':
956
+ return { fr: 'Commande de végétaux - nouvelle soumission', en: 'Vegetals - new quotation' };
957
+ case 'admin_pickup_on_site':
958
+ return { fr: 'Ramassage sur chantier - nouvelle demande', en: 'Pickup on site - new request' };
959
+ case 'admin_borrow_tools':
960
+ return { fr: "Location d'outils - nouvelle demande", en: 'Rent tools - new request' };
961
+ case 'admin_sales_info':
962
+ return {
963
+ fr: 'Produits en solde - Information demandée',
964
+ en: 'On sale products - Information request'
965
+ };
966
+ case 'admin_credit_info':
967
+ return {
968
+ fr: 'Département de crédit - Information demandée',
969
+ en: 'Credit department - Information request'
970
+ };
971
+ case 'admin_transport_quote':
972
+ return {
973
+ fr: 'Location de camion - nouvelle soumission',
974
+ en: 'Transport truck rental - new quotation'
975
+ };
976
+ case 'admin_special_order':
977
+ return { fr: 'Commande spéciale - nouvelle demande', en: 'Special order - new request' };
978
+ case 'admin_installation':
979
+ return { fr: 'Installation - nouvelle soumission', en: 'Installation - new quotation' };
980
+ case 'admin_find_landscaper':
981
+ return { fr: 'Trouver un paysagiste - nouvelle demande', en: 'Find a landscaper - new request' };
982
+ case 'admin_lawn_submission':
983
+ return { fr: 'Soumission gazon - nouvelle demande', en: 'Lawn submission - new request' };
984
+ case 'confirmation_find_landsacper':
985
+ return { fr: 'Trouver un paysagiste - Confirmation', en: 'Find a landscaper - Confirmation' };
986
+ default:
987
+ return { fr: 'Demande de service - nouvelle soumission', en: 'Service request - new quotation' };
988
+ }
989
+ };
990
+ _b.label = 7;
991
+ case 7:
992
+ _b.trys.push([7, 10, , 11]);
993
+ return [4, (0, isomorphic_unfetch_1.default)("".concat(this._api, "/email/sendServiceStaticPageEmail"), {
994
+ method: 'POST',
995
+ headers: {
996
+ authorization: "Bearer ".concat(this._token),
997
+ 'Content-Type': 'application/json',
998
+ 'x-gng-ecomm-token': this._userToken,
999
+ 'x-gng-ecomm-locale': locale
1000
+ },
1001
+ body: JSON.stringify(__assign(__assign(__assign(__assign({}, rest), (!!updatedAttachments && !!updatedAttachments.length ? { attachments: updatedAttachments } : {})), { subject: getSubjectByType(), title: getSubjectByType(), type: type }), (!!testEmail ? { test_email: testEmail } : {})))
1002
+ })];
1003
+ case 8:
1004
+ fetchData = _b.sent();
1005
+ return [4, fetchData.json()];
1006
+ case 9:
1007
+ responseData = (_b.sent());
1008
+ if (responseData.status === 200)
1009
+ return [2, true];
1010
+ return [2, responseData.error];
1011
+ case 10:
1012
+ e_5 = _b.sent();
1013
+ console.log('error on calling api: ', e_5);
1014
+ if (!!updatedAttachments) {
1015
+ return [2, {
1016
+ status: 413,
1017
+ error: {
1018
+ fr: "Vos pièces jointes n'ont pas pu être envoyées. Veuillez réessayer.",
1019
+ en: 'Your attachments could not be sent. Please try again.'
1020
+ }
1021
+ }];
1022
+ }
1023
+ return [2, ''];
1024
+ case 11: return [2];
1025
+ }
1026
+ });
1027
+ }); };
1028
+ this.sendSponsorRequestEmail = function (locale, form, template_name) { return __awaiter(_this, void 0, void 0, function () {
1029
+ var plan, rest, updatedPlan, planBase64, splitString, e_6, fetchData, responseData;
1030
+ return __generator(this, function (_a) {
1031
+ switch (_a.label) {
1032
+ case 0:
1033
+ plan = form.plan, rest = __rest(form, ["plan"]);
1034
+ if (!!!plan) return [3, 4];
1035
+ _a.label = 1;
1036
+ case 1:
1037
+ _a.trys.push([1, 3, , 4]);
1038
+ return [4, (0, functions_2.toBase64)(plan)];
1039
+ case 2:
1040
+ planBase64 = _a.sent();
1041
+ if (typeof planBase64 === 'string') {
1042
+ splitString = planBase64.split(';base64,');
1043
+ if (!!splitString.length && !!splitString[1]) {
1044
+ updatedPlan = {
1045
+ name: plan.name,
1046
+ content: splitString[1]
1047
+ };
1048
+ }
1049
+ }
1050
+ return [3, 4];
1051
+ case 3:
1052
+ e_6 = _a.sent();
1053
+ console.log('error on converting to base64: ', e_6);
1054
+ return [3, 4];
1055
+ case 4: return [4, (0, isomorphic_unfetch_1.default)("".concat(this._api, "/email/sendSponsorRequestEmail"), {
1056
+ method: 'POST',
1057
+ headers: {
1058
+ authorization: "Bearer ".concat(this._token),
1059
+ 'Content-Type': 'application/json',
1060
+ 'x-gng-ecomm-token': this._userToken,
1061
+ 'x-gng-ecomm-locale': locale
1062
+ },
1063
+ body: JSON.stringify({
1064
+ contenu: __assign(__assign(__assign({}, rest), { admin: true, has_plan: !!updatedPlan }), (!!updatedPlan
1065
+ ? {
1066
+ plan: updatedPlan
1067
+ }
1068
+ : {})),
1069
+ template_name: template_name
1070
+ })
1071
+ })];
1072
+ case 5:
1073
+ fetchData = _a.sent();
1074
+ return [4, fetchData.json()];
1075
+ case 6:
1076
+ responseData = (_a.sent());
1077
+ if (responseData.status === 200)
1078
+ return [2, true];
1079
+ return [2, responseData.error];
1080
+ }
1081
+ });
1082
+ }); };
1083
+ this.sendPreMeetingFormEmail = function (locale, form, proId) { return __awaiter(_this, void 0, void 0, function () {
1084
+ var attachments, rest, _a, pro_logo, restProInfos, updatedAttachments, updatedLogo, _i, _b, att, cvBase64, e_7, logoBase64, e_8, fetchData, responseData;
1085
+ return __generator(this, function (_c) {
1086
+ switch (_c.label) {
1087
+ case 0:
1088
+ attachments = form.attachments, rest = __rest(form, ["attachments"]);
1089
+ _a = rest.pro_infos, pro_logo = _a.pro_logo, restProInfos = __rest(_a, ["pro_logo"]);
1090
+ updatedAttachments = [];
1091
+ updatedLogo = '';
1092
+ if (!!!attachments) return [3, 6];
1093
+ _i = 0, _b = attachments;
1094
+ _c.label = 1;
1095
+ case 1:
1096
+ if (!(_i < _b.length)) return [3, 6];
1097
+ att = _b[_i];
1098
+ _c.label = 2;
1099
+ case 2:
1100
+ _c.trys.push([2, 4, , 5]);
1101
+ return [4, (0, functions_2.toBase64)(att)];
1102
+ case 3:
1103
+ cvBase64 = _c.sent();
1104
+ updatedAttachments.push({ name: att.name, content: cvBase64 });
1105
+ return [3, 5];
1106
+ case 4:
1107
+ e_7 = _c.sent();
1108
+ console.log('error on converting to base64: ', e_7);
1109
+ return [3, 5];
1110
+ case 5:
1111
+ _i++;
1112
+ return [3, 1];
1113
+ case 6:
1114
+ if (!!!pro_logo) return [3, 10];
1115
+ _c.label = 7;
1116
+ case 7:
1117
+ _c.trys.push([7, 9, , 10]);
1118
+ return [4, (0, functions_2.toBase64)(pro_logo)];
1119
+ case 8:
1120
+ logoBase64 = _c.sent();
1121
+ updatedLogo = { name: pro_logo.name, content: logoBase64 };
1122
+ return [3, 10];
1123
+ case 9:
1124
+ e_8 = _c.sent();
1125
+ console.log('error on converting logo to base64: ', e_8);
1126
+ return [3, 10];
1127
+ case 10: return [4, (0, isomorphic_unfetch_1.default)("".concat(this._api, "/email/sendPreMeetingFormEmail"), {
1128
+ method: 'POST',
1129
+ headers: {
1130
+ authorization: "Bearer ".concat(this._token),
1131
+ 'Content-Type': 'application/json',
1132
+ 'x-gng-ecomm-token': this._userToken,
1133
+ 'x-gng-ecomm-locale': locale
1134
+ },
1135
+ body: JSON.stringify(__assign(__assign(__assign(__assign({}, rest), { pro_infos: __assign(__assign({}, restProInfos), (!!updatedLogo ? { pro_logo: updatedLogo } : {})) }), (!!updatedAttachments && !!updatedAttachments.length ? { attachments: updatedAttachments } : {})), (!!proId ? { pro_id: proId } : {})))
1136
+ })];
1137
+ case 11:
1138
+ fetchData = _c.sent();
1139
+ return [4, fetchData.json()];
1140
+ case 12:
1141
+ responseData = (_c.sent());
1142
+ if (responseData.status === 200)
1143
+ return [2, true];
1144
+ return [2, responseData.error];
1145
+ }
1146
+ });
1147
+ }); };
1148
+ this.sendWishlistByEmail = function (locale, contenu, template_name) { return __awaiter(_this, void 0, void 0, function () {
1149
+ var fetchData, responseData;
1150
+ return __generator(this, function (_a) {
1151
+ switch (_a.label) {
1152
+ case 0: return [4, (0, isomorphic_unfetch_1.default)("".concat(this._api, "/email/sendWishlistEmail"), {
1153
+ method: 'POST',
1154
+ headers: {
1155
+ authorization: "Bearer ".concat(this._token),
1156
+ 'Content-Type': 'application/json',
1157
+ 'x-gng-ecomm-token': this._userToken,
1158
+ 'x-gng-ecomm-locale': locale
1159
+ },
1160
+ body: JSON.stringify({ contenu: contenu, template_name: template_name })
1161
+ })];
1162
+ case 1:
1163
+ fetchData = _a.sent();
1164
+ return [4, fetchData.json()];
1165
+ case 2:
1166
+ responseData = (_a.sent());
1167
+ if (responseData.status === 200)
1168
+ return [2, true];
1169
+ return [2, responseData.error];
1170
+ }
1171
+ });
1172
+ }); };
1173
+ this.resetPassword = function (token, newPassword, withEmail) { return __awaiter(_this, void 0, void 0, function () {
1174
+ var fetchData, responseData;
1175
+ return __generator(this, function (_a) {
1176
+ switch (_a.label) {
1177
+ case 0: return [4, (0, isomorphic_unfetch_1.default)("".concat(this._api, "/user/resetPassword"), {
1178
+ method: 'POST',
1179
+ headers: {
1180
+ authorization: "Bearer ".concat(this._token),
1181
+ 'Content-Type': 'application/json',
1182
+ 'x-gng-ecomm-token': this._userToken
1183
+ },
1184
+ body: JSON.stringify({ validationCode: token, newPassword: newPassword, withEmail: withEmail })
1185
+ })];
1186
+ case 1:
1187
+ fetchData = _a.sent();
1188
+ return [4, fetchData.json()];
1189
+ case 2:
1190
+ responseData = (_a.sent());
1191
+ if (responseData.status === 200)
1192
+ return [2, responseData.data];
1193
+ if (responseData.status === 403)
1194
+ return [2, {
1195
+ fr: "Plus d'un compte a \u00E9t\u00E9 trouv\u00E9 avec ".concat(withEmail ? 'ce courriel' : 'ce ID client', ". Veuillez contacter un administrateur pour proc\u00E9der."),
1196
+ en: "More than one account was found with ".concat(withEmail ? 'this email' : 'this client ID', ". Please contact an administrator to proceed.")
1197
+ }];
1198
+ return [2, responseData.error];
1199
+ }
1200
+ });
1201
+ }); };
1202
+ this.user = {
1203
+ getUser: this.getUser,
1204
+ saveUser: this.saveUser,
1205
+ deleteUser: this.deleteUser,
1206
+ loginUser: this.loginUser,
1207
+ loginUserWithID: this.loginUserWithID,
1208
+ loginUserWithFacebook: this.loginUserWithFacebook,
1209
+ logout: this.logout,
1210
+ registerUser: this.registerUser,
1211
+ killRepCart: this.killRepCart,
1212
+ getOrder: this.getOrder,
1213
+ getOrders: this.getOrders,
1214
+ changePassword: this.changePassword,
1215
+ changeProfilePicture: this.changeProfilePicture,
1216
+ validateAccount: this.validateAccount,
1217
+ sendResetPasswordEmail: this.sendResetPasswordEmail,
1218
+ resetPassword: this.resetPassword,
1219
+ sendApplicationEmail: this.sendApplicationEmail,
1220
+ sendContactEmail: this.sendContactEmail,
1221
+ sendServiceEmail: this.sendServicePageEmail,
1222
+ anonymousResetPassword: this.anonymousResetPassword,
1223
+ checkG2: this.checkG2ForCustomer,
1224
+ createPro: this.createProCustomer,
1225
+ fetchCustomPriceList: this.fetchCustomPriceList
1226
+ };
1227
+ this.getImage = function (imgName, formatQuery, addImgPath) {
1228
+ if (addImgPath === void 0) { addImgPath = false; }
1229
+ var img = new image_1.default("".concat(addImgPath ? _this._imgPath : '').concat(_this._imgPath, "/").concat(imgName));
1230
+ return img.getFileDownloadUrl(formatQuery);
1231
+ };
1232
+ this.getProducts = function (page, hpp, query, filters, indice, f, useProspr) {
1233
+ if (page === void 0) { page = 0; }
1234
+ if (hpp === void 0) { hpp = 10; }
1235
+ if (query === void 0) { query = ''; }
1236
+ if (filters === void 0) { filters = ''; }
1237
+ if (indice === void 0) { indice = 'products'; }
1238
+ if (f === void 0) { f = ''; }
1239
+ if (useProspr === void 0) { useProspr = false; }
1240
+ return __awaiter(_this, void 0, void 0, function () {
1241
+ var error_6;
1242
+ return __generator(this, function (_a) {
1243
+ switch (_a.label) {
1244
+ case 0:
1245
+ _a.trys.push([0, 2, , 3]);
1246
+ return [4, Product_1.default.fetch({
1247
+ app: process.env.NEXT_PUBLIC_ALGOLIA_APP,
1248
+ api: process.env.NEXT_PUBLIC_ALGOLIA_TOKEN,
1249
+ page: page,
1250
+ hpp: hpp,
1251
+ query: query,
1252
+ filters: filters,
1253
+ indice: indice || 'products',
1254
+ f: f,
1255
+ useProspr: useProspr,
1256
+ space: undefined
1257
+ })];
1258
+ case 1: return [2, _a.sent()];
1259
+ case 2:
1260
+ error_6 = _a.sent();
1261
+ throw error_6;
1262
+ case 3: return [2];
1263
+ }
1264
+ });
1265
+ });
1266
+ };
1267
+ this.getProduct = function (parent_slug, locale, useProdArray, noDrafts) { return __awaiter(_this, void 0, void 0, function () {
1268
+ var prod, fetchData, responseData;
1269
+ return __generator(this, function (_a) {
1270
+ switch (_a.label) {
1271
+ case 0:
1272
+ prod = undefined;
1273
+ if (!!useProdArray && !!useProdArray.length) {
1274
+ prod = useProdArray.find(function (fee) { return fee.slug === parent_slug; });
1275
+ }
1276
+ if (!!!!prod) return [3, 3];
1277
+ return [4, (0, isomorphic_unfetch_1.default)("".concat(this._api, "/products/").concat(encodeURIComponent(parent_slug)), {
1278
+ method: 'GET',
1279
+ headers: {
1280
+ Authorization: "Bearer ".concat(this._token),
1281
+ 'x-gng-ecomm-locale': locale,
1282
+ 'x-gng-ecomm-token': this._userToken
1283
+ }
1284
+ })];
1285
+ case 1:
1286
+ fetchData = _a.sent();
1287
+ return [4, fetchData.json()];
1288
+ case 2:
1289
+ responseData = _a.sent();
1290
+ if (responseData.status !== 200)
1291
+ throw new Error(JSON.stringify({ status: responseData.status, error: responseData.error }));
1292
+ prod = responseData.data;
1293
+ _a.label = 3;
1294
+ case 3:
1295
+ if (!!noDrafts && prod.draft)
1296
+ return [2, undefined];
1297
+ return [2, prod];
1298
+ }
1299
+ });
1300
+ }); };
1301
+ this.getUpsellOfProducts = function (slugs, customPriceList) { return __awaiter(_this, void 0, void 0, function () {
1302
+ var fetchData, responseData;
1303
+ return __generator(this, function (_a) {
1304
+ switch (_a.label) {
1305
+ case 0: return [4, (0, isomorphic_unfetch_1.default)("".concat(this._api, "/products/getUpsellOfProductsWithProducts"), {
1306
+ method: 'POST',
1307
+ headers: {
1308
+ Authorization: "Bearer ".concat(this._token),
1309
+ 'Content-Type': 'application/json'
1310
+ },
1311
+ body: JSON.stringify(__assign({ slugs: slugs }, (!!customPriceList ? { customPriceList: customPriceList } : {})))
1312
+ })];
1313
+ case 1:
1314
+ fetchData = _a.sent();
1315
+ return [4, fetchData.json()];
1316
+ case 2:
1317
+ responseData = _a.sent();
1318
+ if (responseData.status !== 200)
1319
+ throw new Error(JSON.stringify({ status: responseData.status, error: responseData.error }));
1320
+ return [2, responseData.data];
1321
+ }
1322
+ });
1323
+ }); };
1324
+ this.getAttributes = function () { return __awaiter(_this, void 0, void 0, function () {
1325
+ var fetchData, resJson, error_7;
1326
+ return __generator(this, function (_a) {
1327
+ switch (_a.label) {
1328
+ case 0:
1329
+ _a.trys.push([0, 3, , 4]);
1330
+ return [4, (0, isomorphic_unfetch_1.default)("".concat(this._api, "/attributes"), {
1331
+ method: 'GET',
1332
+ headers: {
1333
+ authorization: "Bearer ".concat(this._token),
1334
+ 'Content-Type': 'application/json'
1335
+ }
1336
+ })];
1337
+ case 1:
1338
+ fetchData = _a.sent();
1339
+ return [4, fetchData.json()];
1340
+ case 2:
1341
+ resJson = _a.sent();
1342
+ return [2, resJson.data.map(function (a) { return (__assign(__assign({}, a), { slug: !!a.slug ? a.slug : (0, functions_1.string_to_slug)((0, functions_1.translate)('fr', a.name)) })); })];
1343
+ case 3:
1344
+ error_7 = _a.sent();
1345
+ console.log('error fetch attributes: ', error_7);
1346
+ return [3, 4];
1347
+ case 4: return [2];
1348
+ }
1349
+ });
1350
+ }); };
1351
+ this.getCategories = function () { return __awaiter(_this, void 0, void 0, function () {
1352
+ var fetchData, resJson, error_8;
1353
+ return __generator(this, function (_a) {
1354
+ switch (_a.label) {
1355
+ case 0:
1356
+ _a.trys.push([0, 3, , 4]);
1357
+ return [4, (0, isomorphic_unfetch_1.default)("".concat(this._api, "/categories"), {
1358
+ method: 'GET',
1359
+ headers: {
1360
+ authorization: "Bearer ".concat(this._token),
1361
+ 'Content-Type': 'application/json'
1362
+ }
1363
+ })];
1364
+ case 1:
1365
+ fetchData = _a.sent();
1366
+ return [4, fetchData.json()];
1367
+ case 2:
1368
+ resJson = (_a.sent());
1369
+ return [2, resJson.data];
1370
+ case 3:
1371
+ error_8 = _a.sent();
1372
+ console.log('error fetch categories: ', error_8);
1373
+ return [3, 4];
1374
+ case 4: return [2];
1375
+ }
1376
+ });
1377
+ }); };
1378
+ this.getBrands = function () { return __awaiter(_this, void 0, void 0, function () {
1379
+ var fetchData, resJson, error_9;
1380
+ return __generator(this, function (_a) {
1381
+ switch (_a.label) {
1382
+ case 0:
1383
+ _a.trys.push([0, 3, , 4]);
1384
+ return [4, (0, isomorphic_unfetch_1.default)("".concat(this._api, "/brands"), {
1385
+ method: 'GET',
1386
+ headers: {
1387
+ authorization: "Bearer ".concat(this._token),
1388
+ 'Content-Type': 'application/json'
1389
+ }
1390
+ })];
1391
+ case 1:
1392
+ fetchData = _a.sent();
1393
+ return [4, fetchData.json()];
1394
+ case 2:
1395
+ resJson = (_a.sent());
1396
+ return [2, resJson.data];
1397
+ case 3:
1398
+ error_9 = _a.sent();
1399
+ console.log('error fetch brands: ', error_9);
1400
+ return [3, 4];
1401
+ case 4: return [2];
1402
+ }
1403
+ });
1404
+ }); };
1405
+ this.getInventoryItems = function (parentSlug) { return __awaiter(_this, void 0, void 0, function () {
1406
+ var fetchData, resJson, error_10;
1407
+ return __generator(this, function (_a) {
1408
+ switch (_a.label) {
1409
+ case 0:
1410
+ _a.trys.push([0, 3, , 4]);
1411
+ return [4, (0, isomorphic_unfetch_1.default)("".concat(this._api, "/inventories").concat(!!parentSlug ? "/".concat(encodeURIComponent(parentSlug)) : ''), {
1412
+ method: 'GET',
1413
+ headers: {
1414
+ authorization: "Bearer ".concat(this._token),
1415
+ 'Content-Type': 'application/json'
1416
+ }
1417
+ })];
1418
+ case 1:
1419
+ fetchData = _a.sent();
1420
+ return [4, fetchData.json()];
1421
+ case 2:
1422
+ resJson = (_a.sent());
1423
+ return [2, resJson.data];
1424
+ case 3:
1425
+ error_10 = _a.sent();
1426
+ console.log("error fetch inventory items".concat(!!parentSlug ? 'for parentSlug ' + parentSlug : '', ": "), error_10);
1427
+ return [3, 4];
1428
+ case 4: return [2];
1429
+ }
1430
+ });
1431
+ }); };
1432
+ this.getOneInventoryItem = function (sku) { return __awaiter(_this, void 0, void 0, function () {
1433
+ var fetchData, resJson, error_11;
1434
+ return __generator(this, function (_a) {
1435
+ switch (_a.label) {
1436
+ case 0:
1437
+ _a.trys.push([0, 3, , 4]);
1438
+ return [4, (0, isomorphic_unfetch_1.default)("".concat(this._api, "/inventory/").concat(encodeURIComponent(sku)), {
1439
+ method: 'GET',
1440
+ headers: {
1441
+ authorization: "Bearer ".concat(this._token),
1442
+ 'Content-Type': 'application/json'
1443
+ }
1444
+ })];
1445
+ case 1:
1446
+ fetchData = _a.sent();
1447
+ return [4, fetchData.json()];
1448
+ case 2:
1449
+ resJson = (_a.sent());
1450
+ return [2, resJson.data];
1451
+ case 3:
1452
+ error_11 = _a.sent();
1453
+ console.log("error fetch inventory item for sku: ".concat(sku), error_11);
1454
+ return [2, undefined];
1455
+ case 4: return [2];
1456
+ }
1457
+ });
1458
+ }); };
1459
+ this.getLatestProducts = function () { return __awaiter(_this, void 0, void 0, function () {
1460
+ var fetchData, resJson, error_12;
1461
+ return __generator(this, function (_a) {
1462
+ switch (_a.label) {
1463
+ case 0:
1464
+ _a.trys.push([0, 3, , 4]);
1465
+ return [4, (0, isomorphic_unfetch_1.default)("".concat(this._api, "/latest_products"), {
1466
+ method: 'GET',
1467
+ headers: {
1468
+ authorization: "Bearer ".concat(this._token),
1469
+ 'Content-Type': 'application/json'
1470
+ }
1471
+ })];
1472
+ case 1:
1473
+ fetchData = _a.sent();
1474
+ return [4, fetchData.json()];
1475
+ case 2:
1476
+ resJson = (_a.sent());
1477
+ return [2, resJson.data];
1478
+ case 3:
1479
+ error_12 = _a.sent();
1480
+ console.log("error fetching latest products", error_12);
1481
+ return [3, 4];
1482
+ case 4: return [2];
1483
+ }
1484
+ });
1485
+ }); };
1486
+ this._getFees = function () { return __awaiter(_this, void 0, void 0, function () {
1487
+ var fetchData, resJson, error_13;
1488
+ return __generator(this, function (_a) {
1489
+ switch (_a.label) {
1490
+ case 0:
1491
+ _a.trys.push([0, 3, , 4]);
1492
+ return [4, (0, isomorphic_unfetch_1.default)("".concat(this._api, "/products/getFees"), {
1493
+ method: 'GET',
1494
+ headers: {
1495
+ authorization: "Bearer ".concat(this._token),
1496
+ 'x-gng-ecomm-token': this._userToken
1497
+ }
1498
+ })];
1499
+ case 1:
1500
+ fetchData = _a.sent();
1501
+ return [4, fetchData.json()];
1502
+ case 2:
1503
+ resJson = (_a.sent());
1504
+ if (resJson.status !== 200) {
1505
+ console.log('error on fetching fees: ', !!resJson.error ? resJson.error.toString() : '');
1506
+ return [2, []];
1507
+ }
1508
+ return [2, resJson.data];
1509
+ case 3:
1510
+ error_13 = _a.sent();
1511
+ console.log("error fetching fees", error_13);
1512
+ return [3, 4];
1513
+ case 4: return [2];
1514
+ }
1515
+ });
1516
+ }); };
1517
+ this.products = {
1518
+ getProducts: this.getProducts,
1519
+ getProduct: this.getProduct,
1520
+ getUpsellOfProducts: this.getUpsellOfProducts,
1521
+ getAttributes: this.getAttributes,
1522
+ getCategories: this.getCategories,
1523
+ getBrands: this.getBrands,
1524
+ getInventoryItems: this.getInventoryItems,
1525
+ getOneInventoryItem: this.getOneInventoryItem,
1526
+ getLatestProducts: this.getLatestProducts,
1527
+ getFees: this._getFees
1528
+ };
1529
+ this.getIfAddressIsInsideZones = function (address) { return __awaiter(_this, void 0, void 0, function () {
1530
+ var userPos, lat, lng, zone, zones, google_1, insideZones, _i, zones_2, zone_1, polygon, error_14;
1531
+ return __generator(this, function (_a) {
1532
+ switch (_a.label) {
1533
+ case 0:
1534
+ _a.trys.push([0, 4, , 5]);
1535
+ return [4, (0, zones_1.getPositionFromAddress)(address)];
1536
+ case 1:
1537
+ userPos = _a.sent();
1538
+ if (!!!userPos)
1539
+ return [2, []];
1540
+ lat = userPos.lat, lng = userPos.lng;
1541
+ return [4, (0, isomorphic_unfetch_1.default)("".concat(this._api, "/shipping/zones"), {
1542
+ method: 'POST',
1543
+ headers: {
1544
+ authorization: "Bearer ".concat(this._token),
1545
+ 'Content-Type': 'application/json'
1546
+ },
1547
+ body: JSON.stringify({ address: address })
1548
+ })];
1549
+ case 2:
1550
+ zone = _a.sent();
1551
+ if (zone.status !== 200)
1552
+ return [2, []];
1553
+ return [4, zone.json()];
1554
+ case 3:
1555
+ zones = (_a.sent()).data.zones;
1556
+ google_1 = window.google;
1557
+ insideZones = [];
1558
+ for (_i = 0, zones_2 = zones; _i < zones_2.length; _i++) {
1559
+ zone_1 = zones_2[_i];
1560
+ polygon = new google_1.maps.Polygon({
1561
+ paths: zone_1.polygon.split(';').map(function (coords) { return ({
1562
+ lat: (0, lodash_1.toNumber)(coords.split(',')[1]),
1563
+ lng: (0, lodash_1.toNumber)(coords.split(',')[0])
1564
+ }); })
1565
+ });
1566
+ if (google_1.maps.geometry.poly.containsLocation({ lat: Number(lat), lng: Number(lng) }, polygon)) {
1567
+ insideZones.push(zone_1.slug);
1568
+ }
1569
+ }
1570
+ return [2, insideZones];
1571
+ case 4:
1572
+ error_14 = _a.sent();
1573
+ if (process.env.NODE_ENV !== 'production')
1574
+ console.log('error while fetching zones', error_14);
1575
+ return [2, []];
1576
+ case 5: return [2];
1577
+ }
1578
+ });
1579
+ }); };
1580
+ this._pricingByQuery = function (query) { return __awaiter(_this, void 0, void 0, function () {
1581
+ var fetchData, resJson, error_15;
1582
+ return __generator(this, function (_a) {
1583
+ switch (_a.label) {
1584
+ case 0:
1585
+ _a.trys.push([0, 3, , 4]);
1586
+ return [4, (0, isomorphic_unfetch_1.default)("".concat(this._api, "/services/pricing/byQuery"), {
1587
+ method: 'POST',
1588
+ headers: {
1589
+ authorization: "Bearer ".concat(this._token),
1590
+ 'Content-Type': 'application/json'
1591
+ },
1592
+ body: JSON.stringify({ query: query })
1593
+ })];
1594
+ case 1:
1595
+ fetchData = _a.sent();
1596
+ return [4, fetchData.json()];
1597
+ case 2:
1598
+ resJson = _a.sent();
1599
+ return [2, resJson.data];
1600
+ case 3:
1601
+ error_15 = _a.sent();
1602
+ throw error_15;
1603
+ case 4: return [2];
1604
+ }
1605
+ });
1606
+ }); };
1607
+ this._buyFromForm = function (form) { return __awaiter(_this, void 0, void 0, function () {
1608
+ var fetchData, resJson, error_16;
1609
+ return __generator(this, function (_a) {
1610
+ switch (_a.label) {
1611
+ case 0:
1612
+ _a.trys.push([0, 3, , 4]);
1613
+ return [4, (0, isomorphic_unfetch_1.default)("".concat(this._api, "/services/buy/fromForm"), {
1614
+ method: 'POST',
1615
+ headers: {
1616
+ authorization: "Bearer ".concat(this._token),
1617
+ 'Content-Type': 'application/json'
1618
+ },
1619
+ body: JSON.stringify(form)
1620
+ })];
1621
+ case 1:
1622
+ fetchData = _a.sent();
1623
+ return [4, fetchData.json()];
1624
+ case 2:
1625
+ resJson = _a.sent();
1626
+ if (!!resJson.error) {
1627
+ return [2, false];
1628
+ }
1629
+ return [2, true];
1630
+ case 3:
1631
+ error_16 = _a.sent();
1632
+ throw error_16;
1633
+ case 4: return [2];
1634
+ }
1635
+ });
1636
+ }); };
1637
+ this._getSearchServices = function () { return __awaiter(_this, void 0, void 0, function () {
1638
+ var fetchData, resJson, space, error_17;
1639
+ return __generator(this, function (_a) {
1640
+ switch (_a.label) {
1641
+ case 0:
1642
+ _a.trys.push([0, 3, , 4]);
1643
+ return [4, (0, isomorphic_unfetch_1.default)("".concat(this._api, "/space"), {
1644
+ method: 'GET',
1645
+ headers: {
1646
+ authorization: "Bearer ".concat(this._token),
1647
+ 'Content-Type': 'application/json'
1648
+ }
1649
+ })];
1650
+ case 1:
1651
+ fetchData = _a.sent();
1652
+ return [4, fetchData.json()];
1653
+ case 2:
1654
+ resJson = _a.sent();
1655
+ if (!!resJson.error) {
1656
+ return [2, []];
1657
+ }
1658
+ space = resJson.data;
1659
+ if (!!!space || !!!space._space)
1660
+ return [2, []];
1661
+ return [2, space._space.external_services.filter(function (s) { return s.type === 'index'; })];
1662
+ case 3:
1663
+ error_17 = _a.sent();
1664
+ throw error_17;
1665
+ case 4: return [2];
1666
+ }
1667
+ });
1668
+ }); };
1669
+ this.services = {
1670
+ pricingByQuery: this._pricingByQuery,
1671
+ buy: {
1672
+ fromForm: this._buyFromForm
1673
+ },
1674
+ searchServices: this._getSearchServices
1675
+ };
1676
+ this._getAllCatalogues = function (locale) { return __awaiter(_this, void 0, void 0, function () {
1677
+ var fetchData, responseData;
1678
+ return __generator(this, function (_a) {
1679
+ switch (_a.label) {
1680
+ case 0: return [4, (0, isomorphic_unfetch_1.default)("".concat(this._api, "/catalogues"), {
1681
+ method: 'GET',
1682
+ headers: {
1683
+ Authorization: "Bearer ".concat(this._token),
1684
+ 'x-gng-ecomm-locale': locale
1685
+ }
1686
+ })];
1687
+ case 1:
1688
+ fetchData = _a.sent();
1689
+ return [4, fetchData.json()];
1690
+ case 2:
1691
+ responseData = _a.sent();
1692
+ if (responseData.status !== 200)
1693
+ throw new Error(JSON.stringify({ status: responseData.status, error: responseData.error }));
1694
+ return [2, responseData.data.filter(function (catalogue) { return !!!catalogue.draft; })];
1695
+ }
1696
+ });
1697
+ }); };
1698
+ this._getCatalogueBySlug = function (slug, locale) { return __awaiter(_this, void 0, void 0, function () {
1699
+ var fetchData, responseData;
1700
+ return __generator(this, function (_a) {
1701
+ switch (_a.label) {
1702
+ case 0: return [4, (0, isomorphic_unfetch_1.default)("".concat(this._api, "/catalogues/").concat(slug), {
1703
+ method: 'GET',
1704
+ headers: {
1705
+ Authorization: "Bearer ".concat(this._token),
1706
+ 'x-gng-ecomm-locale': locale
1707
+ }
1708
+ })];
1709
+ case 1:
1710
+ fetchData = _a.sent();
1711
+ return [4, fetchData.json()];
1712
+ case 2:
1713
+ responseData = _a.sent();
1714
+ if (responseData.status !== 200)
1715
+ throw new Error(JSON.stringify({ status: responseData.status, error: responseData.error }));
1716
+ return [2, responseData.data];
1717
+ }
1718
+ });
1719
+ }); };
1720
+ this.catalogues = {
1721
+ getAll: this._getAllCatalogues,
1722
+ getOne: this._getCatalogueBySlug
1723
+ };
1724
+ this.saveCustomerToMailchimpList = function (customerEmail, listID, mergeFields, tags) { return __awaiter(_this, void 0, void 0, function () {
1725
+ var saved, responseData, e_9;
1726
+ return __generator(this, function (_a) {
1727
+ switch (_a.label) {
1728
+ case 0:
1729
+ _a.trys.push([0, 3, , 4]);
1730
+ return [4, (0, isomorphic_unfetch_1.default)("".concat(this._api, "/marketing/mailchimp/updateOrCreateCustomer"), {
1731
+ method: 'POST',
1732
+ headers: {
1733
+ Authorization: "Bearer ".concat(this._token),
1734
+ 'Content-Type': 'application/json'
1735
+ },
1736
+ body: JSON.stringify(__assign(__assign({ email: customerEmail, listID: listID }, (!!mergeFields ? { mergeFields: mergeFields } : {})), (!!tags ? { tags: tags } : {})))
1737
+ })];
1738
+ case 1:
1739
+ saved = _a.sent();
1740
+ return [4, saved.json()];
1741
+ case 2:
1742
+ responseData = _a.sent();
1743
+ if (responseData.status !== 200)
1744
+ throw new Error(JSON.stringify({ status: responseData.status, error: responseData.error }));
1745
+ return [2, true];
1746
+ case 3:
1747
+ e_9 = _a.sent();
1748
+ console.log('error on saving customer to mailchimp list: ', e_9.toString());
1749
+ return [2, false];
1750
+ case 4: return [2];
1751
+ }
1752
+ });
1753
+ }); };
1754
+ this.getProductListForSitemap = function () { return __awaiter(_this, void 0, void 0, function () {
1755
+ var fetchData, result, e_10;
1756
+ return __generator(this, function (_a) {
1757
+ switch (_a.label) {
1758
+ case 0:
1759
+ _a.trys.push([0, 3, , 4]);
1760
+ return [4, (0, isomorphic_unfetch_1.default)("".concat(this._api, "/analytics/sitmap_data"), {
1761
+ method: 'GET',
1762
+ headers: {
1763
+ authorization: "Bearer ".concat(this._token),
1764
+ 'Content-Type': 'application/json'
1765
+ }
1766
+ })];
1767
+ case 1:
1768
+ fetchData = _a.sent();
1769
+ return [4, fetchData.json()];
1770
+ case 2:
1771
+ result = _a.sent();
1772
+ if (!!fetchData.status && fetchData.status !== 200)
1773
+ throw "".concat(result.data);
1774
+ return [2, result.data];
1775
+ case 3:
1776
+ e_10 = _a.sent();
1777
+ console.log('error fetching sitemap data: ', e_10.toString());
1778
+ return [2, e_10.toString()];
1779
+ case 4: return [2];
1780
+ }
1781
+ });
1782
+ }); };
1783
+ this._api = '';
1784
+ this._imgPath = '';
1785
+ this._token = '';
1786
+ this._userToken = '';
1787
+ this._url = '';
1788
+ this._org = '';
1789
+ this._storeData = null;
1790
+ this._wishlist = null;
1791
+ this._stockNotif = null;
1792
+ }
1793
+ return SDK;
1794
+ }());
1795
+ exports.default = SDK;
1796
1796
  //# sourceMappingURL=index.js.map