addio-ecomm-sdk 1.3.45 → 1.3.47

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