addio-ecomm-sdk 1.3.76 → 1.3.77

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