addio-ecomm-sdk 1.3.71 → 1.3.73

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 (109) hide show
  1. package/.vscode/settings.json +34 -34
  2. package/README.md +79 -79
  3. package/dist/index.d.ts +202 -202
  4. package/dist/index.js +1818 -1818
  5. package/dist/lib/constants/components/CreditCardInput.d.ts +11 -11
  6. package/dist/lib/constants/components/CreditCardInput.js +79 -79
  7. package/dist/lib/constants/components/Snackbar.d.ts +11 -11
  8. package/dist/lib/constants/components/Snackbar.js +39 -39
  9. package/dist/lib/constants/contexts/CartContext/CartContextProvider.d.ts +7 -7
  10. package/dist/lib/constants/contexts/CartContext/CartContextProvider.js +980 -980
  11. package/dist/lib/constants/contexts/CartContext/index.d.ts +79 -79
  12. package/dist/lib/constants/contexts/CartContext/index.js +127 -127
  13. package/dist/lib/constants/contexts/DataContext/DataContextProvider.d.ts +15 -15
  14. package/dist/lib/constants/contexts/DataContext/DataContextProvider.js +304 -299
  15. package/dist/lib/constants/contexts/DataContext/DataContextProvider.js.map +1 -1
  16. package/dist/lib/constants/contexts/DataContext/index.d.ts +47 -46
  17. package/dist/lib/constants/contexts/DataContext/index.js +67 -66
  18. package/dist/lib/constants/contexts/DataContext/index.js.map +1 -1
  19. package/dist/lib/constants/contexts/LogContext/LogContextProvider.d.ts +6 -6
  20. package/dist/lib/constants/contexts/LogContext/LogContextProvider.js +103 -103
  21. package/dist/lib/constants/contexts/LogContext/index.d.ts +7 -7
  22. package/dist/lib/constants/contexts/LogContext/index.js +45 -45
  23. package/dist/lib/constants/contexts/ModalContext/ModalContextProvider.d.ts +7 -7
  24. package/dist/lib/constants/contexts/ModalContext/ModalContextProvider.js +76 -76
  25. package/dist/lib/constants/contexts/ModalContext/index.d.ts +14 -14
  26. package/dist/lib/constants/contexts/ModalContext/index.js +18 -18
  27. package/dist/lib/constants/contexts/SDKContext/SDKProvider.d.ts +8 -8
  28. package/dist/lib/constants/contexts/SDKContext/SDKProvider.js +79 -79
  29. package/dist/lib/constants/contexts/SDKContext/index.d.ts +4 -4
  30. package/dist/lib/constants/contexts/SDKContext/index.js +4 -4
  31. package/dist/lib/constants/contexts/SnackbarContext/SnackbarContext.d.ts +4 -4
  32. package/dist/lib/constants/contexts/SnackbarContext/SnackbarContext.js +6 -6
  33. package/dist/lib/constants/contexts/SnackbarContext/SnackbarContextProvider.d.ts +12 -12
  34. package/dist/lib/constants/contexts/SnackbarContext/SnackbarContextProvider.js +52 -52
  35. package/dist/lib/constants/contexts/SnackbarContext/interfaces/ISnackbarContext.d.ts +17 -17
  36. package/dist/lib/constants/contexts/SnackbarContext/interfaces/ISnackbarContext.js +21 -21
  37. package/dist/lib/constants/contexts/StockNotifContext/StockNotifContextProvider.d.ts +7 -7
  38. package/dist/lib/constants/contexts/StockNotifContext/StockNotifContextProvider.js +179 -179
  39. package/dist/lib/constants/contexts/StockNotifContext/index.d.ts +10 -10
  40. package/dist/lib/constants/contexts/StockNotifContext/index.js +10 -10
  41. package/dist/lib/constants/contexts/UserContext/UserContextProvider.d.ts +5 -5
  42. package/dist/lib/constants/contexts/UserContext/UserContextProvider.js +470 -470
  43. package/dist/lib/constants/contexts/UserContext/index.d.ts +54 -54
  44. package/dist/lib/constants/contexts/UserContext/index.js +82 -82
  45. package/dist/lib/constants/contexts/WishlistContext/WishlistContextProvider.d.ts +6 -6
  46. package/dist/lib/constants/contexts/WishlistContext/WishlistContextProvider.js +327 -327
  47. package/dist/lib/constants/contexts/WishlistContext/index.d.ts +12 -12
  48. package/dist/lib/constants/contexts/WishlistContext/index.js +12 -12
  49. package/dist/lib/constants/hooks/useCart.d.ts +2 -2
  50. package/dist/lib/constants/hooks/useCart.js +11 -11
  51. package/dist/lib/constants/hooks/useData.d.ts +2 -2
  52. package/dist/lib/constants/hooks/useData.js +11 -11
  53. package/dist/lib/constants/hooks/useLogs.d.ts +2 -2
  54. package/dist/lib/constants/hooks/useLogs.js +11 -11
  55. package/dist/lib/constants/hooks/useModal.d.ts +2 -2
  56. package/dist/lib/constants/hooks/useModal.js +11 -11
  57. package/dist/lib/constants/hooks/useSDK.d.ts +2 -2
  58. package/dist/lib/constants/hooks/useSDK.js +11 -11
  59. package/dist/lib/constants/hooks/useSnackbar.d.ts +2 -2
  60. package/dist/lib/constants/hooks/useSnackbar.js +11 -11
  61. package/dist/lib/constants/hooks/useStockNotif.d.ts +2 -2
  62. package/dist/lib/constants/hooks/useStockNotif.js +11 -11
  63. package/dist/lib/constants/hooks/useUser.d.ts +2 -2
  64. package/dist/lib/constants/hooks/useUser.js +11 -11
  65. package/dist/lib/constants/hooks/useWishlist.d.ts +2 -2
  66. package/dist/lib/constants/hooks/useWishlist.js +11 -11
  67. package/dist/lib/models/image/index.d.ts +6 -6
  68. package/dist/lib/models/image/index.js +15 -15
  69. package/dist/lib/models/stockNotification/index.d.ts +13 -13
  70. package/dist/lib/models/stockNotification/index.js +130 -130
  71. package/dist/lib/models/wishlist/index.d.ts +14 -14
  72. package/dist/lib/models/wishlist/index.js +155 -155
  73. package/dist/utils/StripeErrors.d.ts +24 -24
  74. package/dist/utils/StripeErrors.js +55 -55
  75. package/dist/utils/algolia.d.ts +3 -3
  76. package/dist/utils/algolia.js +81 -81
  77. package/dist/utils/analytics.d.ts +71 -71
  78. package/dist/utils/analytics.js +257 -257
  79. package/dist/utils/cart.d.ts +3 -3
  80. package/dist/utils/cart.js +66 -66
  81. package/dist/utils/contentful.d.ts +10 -10
  82. package/dist/utils/contentful.js +136 -136
  83. package/dist/utils/functions.d.ts +21 -21
  84. package/dist/utils/functions.js +200 -195
  85. package/dist/utils/functions.js.map +1 -1
  86. package/dist/utils/getSDK.d.ts +4 -4
  87. package/dist/utils/getSDK.js +77 -77
  88. package/dist/utils/initStoreData.d.ts +3 -3
  89. package/dist/utils/initStoreData.js +62 -62
  90. package/dist/utils/interfaces/IClientCMSData.d.ts +132 -132
  91. package/dist/utils/interfaces/IClientCMSData.js +2 -2
  92. package/dist/utils/interfaces/IEndpointResult.d.ts +10 -10
  93. package/dist/utils/interfaces/IEndpointResult.js +2 -2
  94. package/dist/utils/interfaces/IFacebookUserProfile.d.ts +10 -10
  95. package/dist/utils/interfaces/IFacebookUserProfile.js +2 -2
  96. package/dist/utils/interfaces/IFilter.d.ts +23 -23
  97. package/dist/utils/interfaces/IFilter.js +2 -2
  98. package/dist/utils/interfaces/IGoogleUserProfile.d.ts +7 -7
  99. package/dist/utils/interfaces/IGoogleUserProfile.js +2 -2
  100. package/dist/utils/interfaces/ISDKConfig.d.ts +7 -7
  101. package/dist/utils/interfaces/ISDKConfig.js +2 -2
  102. package/dist/utils/interfaces/ISpaceData.d.ts +18 -18
  103. package/dist/utils/interfaces/ISpaceData.js +2 -2
  104. package/dist/utils/larivieremeunier.d.ts +3 -3
  105. package/dist/utils/larivieremeunier.js +156 -156
  106. package/dist/utils/technosupply.d.ts +3 -3
  107. package/dist/utils/technosupply.js +155 -155
  108. package/package.json +61 -61
  109. package/publish.sh +132 -132
@@ -1,328 +1,328 @@
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 __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
14
- if (k2 === undefined) k2 = k;
15
- var desc = Object.getOwnPropertyDescriptor(m, k);
16
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
17
- desc = { enumerable: true, get: function() { return m[k]; } };
18
- }
19
- Object.defineProperty(o, k2, desc);
20
- }) : (function(o, m, k, k2) {
21
- if (k2 === undefined) k2 = k;
22
- o[k2] = m[k];
23
- }));
24
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
25
- Object.defineProperty(o, "default", { enumerable: true, value: v });
26
- }) : function(o, v) {
27
- o["default"] = v;
28
- });
29
- var __importStar = (this && this.__importStar) || function (mod) {
30
- if (mod && mod.__esModule) return mod;
31
- var result = {};
32
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
33
- __setModuleDefault(result, mod);
34
- return result;
35
- };
36
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
37
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
38
- return new (P || (P = Promise))(function (resolve, reject) {
39
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
40
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
41
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
42
- step((generator = generator.apply(thisArg, _arguments || [])).next());
43
- });
44
- };
45
- var __generator = (this && this.__generator) || function (thisArg, body) {
46
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
47
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
48
- function verb(n) { return function (v) { return step([n, v]); }; }
49
- function step(op) {
50
- if (f) throw new TypeError("Generator is already executing.");
51
- while (g && (g = 0, op[0] && (_ = 0)), _) try {
52
- 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;
53
- if (y = 0, t) op = [op[0] & 2, t.value];
54
- switch (op[0]) {
55
- case 0: case 1: t = op; break;
56
- case 4: _.label++; return { value: op[1], done: false };
57
- case 5: _.label++; y = op[1]; op = [0]; continue;
58
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
59
- default:
60
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
61
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
62
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
63
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
64
- if (t[2]) _.ops.pop();
65
- _.trys.pop(); continue;
66
- }
67
- op = body.call(thisArg, _);
68
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
69
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
70
- }
71
- };
72
- var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
73
- if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
74
- if (ar || !(i in from)) {
75
- if (!ar) ar = Array.prototype.slice.call(from, 0, i);
76
- ar[i] = from[i];
77
- }
78
- }
79
- return to.concat(ar || Array.prototype.slice.call(from));
80
- };
81
- var __importDefault = (this && this.__importDefault) || function (mod) {
82
- return (mod && mod.__esModule) ? mod : { "default": mod };
83
- };
84
- Object.defineProperty(exports, "__esModule", { value: true });
85
- var jsx_runtime_1 = require("react/jsx-runtime");
86
- var lodash_1 = require("lodash");
87
- var react_1 = require("react");
88
- var _1 = __importStar(require("."));
89
- var useSDK_1 = __importDefault(require("../../hooks/useSDK"));
90
- var useSnackbar_1 = __importDefault(require("../../hooks/useSnackbar"));
91
- var useUser_1 = __importDefault(require("../../hooks/useUser"));
92
- var ISnackbarContext_1 = require("../SnackbarContext/interfaces/ISnackbarContext");
93
- function WishlistContextProvider(_a) {
94
- var _this = this;
95
- var children = _a.children;
96
- var setSnackbar = (0, useSnackbar_1.default)().setSnackbar;
97
- var sdk = (0, useSDK_1.default)();
98
- var api = !!sdk ? sdk.getAPIInfos() : null;
99
- var _b = (0, useUser_1.default)(), isUserLoggedIn = _b.isUserLoggedIn, userData = _b.userData;
100
- var _c = (0, react_1.useState)(false), isFetching = _c[0], setIsFetching = _c[1];
101
- var _d = (0, react_1.useState)(false), isFetched = _d[0], setIsFetched = _d[1];
102
- var _e = (0, react_1.useState)(__assign({}, _1.defaultWishlist)), state = _e[0], setState = _e[1];
103
- var getData = (0, react_1.useCallback)(function () { return __awaiter(_this, void 0, void 0, function () {
104
- var storageWishlist, currentWishlist, _wishlist, e_1;
105
- return __generator(this, function (_a) {
106
- switch (_a.label) {
107
- case 0:
108
- if (!!!sdk || !!isFetching)
109
- return [2];
110
- if (!!!userData) {
111
- if (!!state.wishlist && !!state.wishlist.items && !!state.wishlist.items.length) {
112
- setState(_1.defaultWishlist);
113
- setIsFetching(false);
114
- setIsFetched(false);
115
- }
116
- return [2];
117
- }
118
- if (!!isFetched)
119
- return [2];
120
- setIsFetching(true);
121
- storageWishlist = JSON.parse(localStorage.getItem('wishlist') || '{}');
122
- currentWishlist = state.wishlist;
123
- if (!!Object.entries(storageWishlist).length) {
124
- currentWishlist = __assign(__assign({}, state.wishlist), { items: storageWishlist.items });
125
- setState(function (prevState) { return (__assign(__assign({}, prevState), { wishlist: currentWishlist })); });
126
- }
127
- else {
128
- localStorage.setItem('wishlist', JSON.stringify(state.wishlist));
129
- }
130
- currentWishlist = __assign(__assign({}, currentWishlist), { customer_id: !!userData ? String(userData.id) : '', user_email: !!userData && !!userData.basic_info.customer_email ? userData.basic_info.customer_email : '' });
131
- _wishlist = undefined;
132
- _a.label = 1;
133
- case 1:
134
- _a.trys.push([1, 3, , 4]);
135
- return [4, getFromDatabase(currentWishlist)];
136
- case 2:
137
- _wishlist = _a.sent();
138
- return [3, 4];
139
- case 3:
140
- e_1 = _a.sent();
141
- console.log('e: ', e_1);
142
- return [3, 4];
143
- case 4:
144
- if (!!_wishlist) {
145
- currentWishlist = __assign(__assign({}, currentWishlist), { id: _wishlist.id, items: (0, lodash_1.uniq)(__spreadArray(__spreadArray([], _wishlist.items, true), currentWishlist.items, true)) });
146
- setState(function (prevState) { return (__assign(__assign({}, prevState), { wishlist: currentWishlist })); });
147
- }
148
- setIsFetching(false);
149
- setIsFetched(true);
150
- return [2];
151
- }
152
- });
153
- }); }, [state, userData]);
154
- (0, react_1.useEffect)(function () {
155
- getData();
156
- }, [getData]);
157
- var save = (0, react_1.useCallback)(function () {
158
- var storageWishlist = localStorage.getItem('wishlist');
159
- if (JSON.stringify(storageWishlist) !== JSON.stringify(state.wishlist)) {
160
- localStorage.setItem('wishlist', JSON.stringify(state.wishlist));
161
- if (!!!isUserLoggedIn)
162
- return;
163
- saveToDatabase();
164
- }
165
- }, [state.wishlist.items]);
166
- (0, react_1.useEffect)(function () {
167
- save();
168
- }, [save]);
169
- var addItem = function (product_slug, product_name) {
170
- var alreadyInWishlist = false;
171
- setState(function (prevState) {
172
- alreadyInWishlist = prevState.wishlist.items.map(function (item) { return item; }).includes(product_slug);
173
- var newItems = prevState.wishlist.items;
174
- if (!!!alreadyInWishlist) {
175
- newItems = __spreadArray(__spreadArray([], prevState.wishlist.items, true), [product_slug], false);
176
- }
177
- return __assign(__assign({}, prevState), { wishlist: __assign(__assign({}, prevState.wishlist), { items: newItems }) });
178
- });
179
- if (alreadyInWishlist) {
180
- setSnackbar({
181
- title: 'Cet item est déjà dans votre liste de souhait',
182
- type: ISnackbarContext_1.SnackbarTypeEnum.ERROR,
183
- isShown: true
184
- });
185
- }
186
- else {
187
- setSnackbar({
188
- title: "".concat(product_name, " \u00E0 bien \u00E9t\u00E9 ajout\u00E9 \u00E0 votre liste de souhait"),
189
- isShown: true,
190
- type: ISnackbarContext_1.SnackbarTypeEnum.SUCCESS
191
- });
192
- }
193
- };
194
- var removeItem = function (product_slug, product_name) {
195
- setState(function (prevState) {
196
- var newItems = prevState.wishlist.items.filter(function (item) { return item !== product_slug; });
197
- setSnackbar({
198
- title: "".concat(product_name, " \u00E0 bien \u00E9t\u00E9 retir\u00E9 de votre liste de souhait"),
199
- isShown: true,
200
- type: ISnackbarContext_1.SnackbarTypeEnum.SUCCESS
201
- });
202
- return __assign(__assign({}, prevState), { wishlist: __assign(__assign({}, prevState.wishlist), { items: newItems }) });
203
- });
204
- };
205
- var clear = function () {
206
- setState(function (prevState) {
207
- setSnackbar({
208
- title: "Votre liste de souhaits \u00E0 bien \u00E9t\u00E9 vid\u00E9e.",
209
- isShown: true,
210
- type: ISnackbarContext_1.SnackbarTypeEnum.SUCCESS
211
- });
212
- return __assign(__assign({}, prevState), { wishlist: __assign(__assign({}, prevState.wishlist), { items: [] }) });
213
- });
214
- saveToDatabase();
215
- };
216
- var getFromDatabase = function (wishlist) { return __awaiter(_this, void 0, void 0, function () {
217
- var request, responseData, dbWishlist;
218
- return __generator(this, function (_a) {
219
- switch (_a.label) {
220
- case 0:
221
- if (!!!api || !!!sdk)
222
- return [2];
223
- return [4, fetch("".concat(api.api, "/wishlist"), {
224
- method: 'POST',
225
- headers: {
226
- Authorization: "Bearer ".concat(api.token),
227
- 'Content-Type': 'application/json',
228
- 'x-gng-ecomm-token': api.userToken
229
- },
230
- body: JSON.stringify(wishlist)
231
- })];
232
- case 1:
233
- request = _a.sent();
234
- if (!!!request)
235
- return [2];
236
- return [4, request.json()];
237
- case 2:
238
- responseData = _a.sent();
239
- if (responseData.status != 200) {
240
- throw new Error('Impossible de fetch la wishlist: ' + responseData.error);
241
- }
242
- if (responseData.token) {
243
- sdk.setUserToken(responseData.token);
244
- }
245
- dbWishlist = responseData.data;
246
- return [2, dbWishlist];
247
- }
248
- });
249
- }); };
250
- var saveToDatabase = function () { return __awaiter(_this, void 0, void 0, function () {
251
- var request, responseData_1, err_1, request, responseData, err_2;
252
- return __generator(this, function (_a) {
253
- switch (_a.label) {
254
- case 0:
255
- if (!!!state.wishlist || !!!api || !!!sdk)
256
- return [2];
257
- if (!!!state.wishlist.id && (!!!state.wishlist.items || !!!state.wishlist.items.length))
258
- return [2];
259
- if (!!!!state.wishlist.id) return [3, 6];
260
- _a.label = 1;
261
- case 1:
262
- _a.trys.push([1, 4, , 5]);
263
- return [4, fetch("".concat(api.api, "/wishlists/add"), {
264
- method: 'POST',
265
- headers: {
266
- Authorization: "Bearer ".concat(api.token),
267
- 'Content-Type': 'application/json',
268
- 'x-gng-ecomm-token': api.userToken
269
- },
270
- body: JSON.stringify(state.wishlist)
271
- })];
272
- case 2:
273
- request = _a.sent();
274
- if (!!!request)
275
- return [2];
276
- return [4, request.json()];
277
- case 3:
278
- responseData_1 = _a.sent();
279
- if (responseData_1.status != 200) {
280
- throw new Error('Impossible de créer la nouvelle wishlist: ' + responseData_1.error);
281
- }
282
- setState(function (prevState) { return (__assign(__assign({}, prevState), { wishlist: __assign(__assign({}, prevState.wishlist), { id: responseData_1.data.id }) })); });
283
- if (responseData_1.token) {
284
- sdk.setUserToken(responseData_1.token);
285
- }
286
- return [3, 5];
287
- case 4:
288
- err_1 = _a.sent();
289
- console.log(err_1);
290
- return [3, 5];
291
- case 5: return [2];
292
- case 6:
293
- _a.trys.push([6, 9, , 10]);
294
- return [4, fetch("".concat(api.api, "/wishlists/").concat(state.wishlist.id, "/save"), {
295
- method: 'POST',
296
- headers: {
297
- Authorization: "Bearer ".concat(api.token),
298
- 'Content-Type': 'application/json',
299
- 'x-gng-ecomm-token': api.userToken
300
- },
301
- body: JSON.stringify(state.wishlist)
302
- })];
303
- case 7:
304
- request = _a.sent();
305
- if (!!!request)
306
- return [2];
307
- return [4, request.json()];
308
- case 8:
309
- responseData = _a.sent();
310
- if (responseData.status != 200) {
311
- throw new Error('Impossible de fetch la wishlist: ' + responseData.error);
312
- }
313
- if (responseData.token) {
314
- sdk.setUserToken(responseData.token);
315
- }
316
- return [3, 10];
317
- case 9:
318
- err_2 = _a.sent();
319
- console.log(err_2);
320
- return [3, 10];
321
- case 10: return [2];
322
- }
323
- });
324
- }); };
325
- return ((0, jsx_runtime_1.jsx)(_1.default.Provider, __assign({ value: __assign(__assign({}, state), { isFetching: isFetching, addItem: addItem, removeItem: removeItem, clear: clear }) }, { children: (0, jsx_runtime_1.jsx)(react_1.Fragment, { children: children }) })));
326
- }
327
- exports.default = WishlistContextProvider;
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 __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ var desc = Object.getOwnPropertyDescriptor(m, k);
16
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
17
+ desc = { enumerable: true, get: function() { return m[k]; } };
18
+ }
19
+ Object.defineProperty(o, k2, desc);
20
+ }) : (function(o, m, k, k2) {
21
+ if (k2 === undefined) k2 = k;
22
+ o[k2] = m[k];
23
+ }));
24
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
25
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
26
+ }) : function(o, v) {
27
+ o["default"] = v;
28
+ });
29
+ var __importStar = (this && this.__importStar) || function (mod) {
30
+ if (mod && mod.__esModule) return mod;
31
+ var result = {};
32
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
33
+ __setModuleDefault(result, mod);
34
+ return result;
35
+ };
36
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
37
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
38
+ return new (P || (P = Promise))(function (resolve, reject) {
39
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
40
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
41
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
42
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
43
+ });
44
+ };
45
+ var __generator = (this && this.__generator) || function (thisArg, body) {
46
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
47
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
48
+ function verb(n) { return function (v) { return step([n, v]); }; }
49
+ function step(op) {
50
+ if (f) throw new TypeError("Generator is already executing.");
51
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
52
+ 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;
53
+ if (y = 0, t) op = [op[0] & 2, t.value];
54
+ switch (op[0]) {
55
+ case 0: case 1: t = op; break;
56
+ case 4: _.label++; return { value: op[1], done: false };
57
+ case 5: _.label++; y = op[1]; op = [0]; continue;
58
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
59
+ default:
60
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
61
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
62
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
63
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
64
+ if (t[2]) _.ops.pop();
65
+ _.trys.pop(); continue;
66
+ }
67
+ op = body.call(thisArg, _);
68
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
69
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
70
+ }
71
+ };
72
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
73
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
74
+ if (ar || !(i in from)) {
75
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
76
+ ar[i] = from[i];
77
+ }
78
+ }
79
+ return to.concat(ar || Array.prototype.slice.call(from));
80
+ };
81
+ var __importDefault = (this && this.__importDefault) || function (mod) {
82
+ return (mod && mod.__esModule) ? mod : { "default": mod };
83
+ };
84
+ Object.defineProperty(exports, "__esModule", { value: true });
85
+ var jsx_runtime_1 = require("react/jsx-runtime");
86
+ var lodash_1 = require("lodash");
87
+ var react_1 = require("react");
88
+ var _1 = __importStar(require("."));
89
+ var useSDK_1 = __importDefault(require("../../hooks/useSDK"));
90
+ var useSnackbar_1 = __importDefault(require("../../hooks/useSnackbar"));
91
+ var useUser_1 = __importDefault(require("../../hooks/useUser"));
92
+ var ISnackbarContext_1 = require("../SnackbarContext/interfaces/ISnackbarContext");
93
+ function WishlistContextProvider(_a) {
94
+ var _this = this;
95
+ var children = _a.children;
96
+ var setSnackbar = (0, useSnackbar_1.default)().setSnackbar;
97
+ var sdk = (0, useSDK_1.default)();
98
+ var api = !!sdk ? sdk.getAPIInfos() : null;
99
+ var _b = (0, useUser_1.default)(), isUserLoggedIn = _b.isUserLoggedIn, userData = _b.userData;
100
+ var _c = (0, react_1.useState)(false), isFetching = _c[0], setIsFetching = _c[1];
101
+ var _d = (0, react_1.useState)(false), isFetched = _d[0], setIsFetched = _d[1];
102
+ var _e = (0, react_1.useState)(__assign({}, _1.defaultWishlist)), state = _e[0], setState = _e[1];
103
+ var getData = (0, react_1.useCallback)(function () { return __awaiter(_this, void 0, void 0, function () {
104
+ var storageWishlist, currentWishlist, _wishlist, e_1;
105
+ return __generator(this, function (_a) {
106
+ switch (_a.label) {
107
+ case 0:
108
+ if (!!!sdk || !!isFetching)
109
+ return [2];
110
+ if (!!!userData) {
111
+ if (!!state.wishlist && !!state.wishlist.items && !!state.wishlist.items.length) {
112
+ setState(_1.defaultWishlist);
113
+ setIsFetching(false);
114
+ setIsFetched(false);
115
+ }
116
+ return [2];
117
+ }
118
+ if (!!isFetched)
119
+ return [2];
120
+ setIsFetching(true);
121
+ storageWishlist = JSON.parse(localStorage.getItem('wishlist') || '{}');
122
+ currentWishlist = state.wishlist;
123
+ if (!!Object.entries(storageWishlist).length) {
124
+ currentWishlist = __assign(__assign({}, state.wishlist), { items: storageWishlist.items });
125
+ setState(function (prevState) { return (__assign(__assign({}, prevState), { wishlist: currentWishlist })); });
126
+ }
127
+ else {
128
+ localStorage.setItem('wishlist', JSON.stringify(state.wishlist));
129
+ }
130
+ currentWishlist = __assign(__assign({}, currentWishlist), { customer_id: !!userData ? String(userData.id) : '', user_email: !!userData && !!userData.basic_info.customer_email ? userData.basic_info.customer_email : '' });
131
+ _wishlist = undefined;
132
+ _a.label = 1;
133
+ case 1:
134
+ _a.trys.push([1, 3, , 4]);
135
+ return [4, getFromDatabase(currentWishlist)];
136
+ case 2:
137
+ _wishlist = _a.sent();
138
+ return [3, 4];
139
+ case 3:
140
+ e_1 = _a.sent();
141
+ console.log('e: ', e_1);
142
+ return [3, 4];
143
+ case 4:
144
+ if (!!_wishlist) {
145
+ currentWishlist = __assign(__assign({}, currentWishlist), { id: _wishlist.id, items: (0, lodash_1.uniq)(__spreadArray(__spreadArray([], _wishlist.items, true), currentWishlist.items, true)) });
146
+ setState(function (prevState) { return (__assign(__assign({}, prevState), { wishlist: currentWishlist })); });
147
+ }
148
+ setIsFetching(false);
149
+ setIsFetched(true);
150
+ return [2];
151
+ }
152
+ });
153
+ }); }, [state, userData]);
154
+ (0, react_1.useEffect)(function () {
155
+ getData();
156
+ }, [getData]);
157
+ var save = (0, react_1.useCallback)(function () {
158
+ var storageWishlist = localStorage.getItem('wishlist');
159
+ if (JSON.stringify(storageWishlist) !== JSON.stringify(state.wishlist)) {
160
+ localStorage.setItem('wishlist', JSON.stringify(state.wishlist));
161
+ if (!!!isUserLoggedIn)
162
+ return;
163
+ saveToDatabase();
164
+ }
165
+ }, [state.wishlist.items]);
166
+ (0, react_1.useEffect)(function () {
167
+ save();
168
+ }, [save]);
169
+ var addItem = function (product_slug, product_name) {
170
+ var alreadyInWishlist = false;
171
+ setState(function (prevState) {
172
+ alreadyInWishlist = prevState.wishlist.items.map(function (item) { return item; }).includes(product_slug);
173
+ var newItems = prevState.wishlist.items;
174
+ if (!!!alreadyInWishlist) {
175
+ newItems = __spreadArray(__spreadArray([], prevState.wishlist.items, true), [product_slug], false);
176
+ }
177
+ return __assign(__assign({}, prevState), { wishlist: __assign(__assign({}, prevState.wishlist), { items: newItems }) });
178
+ });
179
+ if (alreadyInWishlist) {
180
+ setSnackbar({
181
+ title: 'Cet item est déjà dans votre liste de souhait',
182
+ type: ISnackbarContext_1.SnackbarTypeEnum.ERROR,
183
+ isShown: true
184
+ });
185
+ }
186
+ else {
187
+ setSnackbar({
188
+ title: "".concat(product_name, " \u00E0 bien \u00E9t\u00E9 ajout\u00E9 \u00E0 votre liste de souhait"),
189
+ isShown: true,
190
+ type: ISnackbarContext_1.SnackbarTypeEnum.SUCCESS
191
+ });
192
+ }
193
+ };
194
+ var removeItem = function (product_slug, product_name) {
195
+ setState(function (prevState) {
196
+ var newItems = prevState.wishlist.items.filter(function (item) { return item !== product_slug; });
197
+ setSnackbar({
198
+ title: "".concat(product_name, " \u00E0 bien \u00E9t\u00E9 retir\u00E9 de votre liste de souhait"),
199
+ isShown: true,
200
+ type: ISnackbarContext_1.SnackbarTypeEnum.SUCCESS
201
+ });
202
+ return __assign(__assign({}, prevState), { wishlist: __assign(__assign({}, prevState.wishlist), { items: newItems }) });
203
+ });
204
+ };
205
+ var clear = function () {
206
+ setState(function (prevState) {
207
+ setSnackbar({
208
+ title: "Votre liste de souhaits \u00E0 bien \u00E9t\u00E9 vid\u00E9e.",
209
+ isShown: true,
210
+ type: ISnackbarContext_1.SnackbarTypeEnum.SUCCESS
211
+ });
212
+ return __assign(__assign({}, prevState), { wishlist: __assign(__assign({}, prevState.wishlist), { items: [] }) });
213
+ });
214
+ saveToDatabase();
215
+ };
216
+ var getFromDatabase = function (wishlist) { return __awaiter(_this, void 0, void 0, function () {
217
+ var request, responseData, dbWishlist;
218
+ return __generator(this, function (_a) {
219
+ switch (_a.label) {
220
+ case 0:
221
+ if (!!!api || !!!sdk)
222
+ return [2];
223
+ return [4, fetch("".concat(api.api, "/wishlist"), {
224
+ method: 'POST',
225
+ headers: {
226
+ Authorization: "Bearer ".concat(api.token),
227
+ 'Content-Type': 'application/json',
228
+ 'x-gng-ecomm-token': api.userToken
229
+ },
230
+ body: JSON.stringify(wishlist)
231
+ })];
232
+ case 1:
233
+ request = _a.sent();
234
+ if (!!!request)
235
+ return [2];
236
+ return [4, request.json()];
237
+ case 2:
238
+ responseData = _a.sent();
239
+ if (responseData.status != 200) {
240
+ throw new Error('Impossible de fetch la wishlist: ' + responseData.error);
241
+ }
242
+ if (responseData.token) {
243
+ sdk.setUserToken(responseData.token);
244
+ }
245
+ dbWishlist = responseData.data;
246
+ return [2, dbWishlist];
247
+ }
248
+ });
249
+ }); };
250
+ var saveToDatabase = function () { return __awaiter(_this, void 0, void 0, function () {
251
+ var request, responseData_1, err_1, request, responseData, err_2;
252
+ return __generator(this, function (_a) {
253
+ switch (_a.label) {
254
+ case 0:
255
+ if (!!!state.wishlist || !!!api || !!!sdk)
256
+ return [2];
257
+ if (!!!state.wishlist.id && (!!!state.wishlist.items || !!!state.wishlist.items.length))
258
+ return [2];
259
+ if (!!!!state.wishlist.id) return [3, 6];
260
+ _a.label = 1;
261
+ case 1:
262
+ _a.trys.push([1, 4, , 5]);
263
+ return [4, fetch("".concat(api.api, "/wishlists/add"), {
264
+ method: 'POST',
265
+ headers: {
266
+ Authorization: "Bearer ".concat(api.token),
267
+ 'Content-Type': 'application/json',
268
+ 'x-gng-ecomm-token': api.userToken
269
+ },
270
+ body: JSON.stringify(state.wishlist)
271
+ })];
272
+ case 2:
273
+ request = _a.sent();
274
+ if (!!!request)
275
+ return [2];
276
+ return [4, request.json()];
277
+ case 3:
278
+ responseData_1 = _a.sent();
279
+ if (responseData_1.status != 200) {
280
+ throw new Error('Impossible de créer la nouvelle wishlist: ' + responseData_1.error);
281
+ }
282
+ setState(function (prevState) { return (__assign(__assign({}, prevState), { wishlist: __assign(__assign({}, prevState.wishlist), { id: responseData_1.data.id }) })); });
283
+ if (responseData_1.token) {
284
+ sdk.setUserToken(responseData_1.token);
285
+ }
286
+ return [3, 5];
287
+ case 4:
288
+ err_1 = _a.sent();
289
+ console.log(err_1);
290
+ return [3, 5];
291
+ case 5: return [2];
292
+ case 6:
293
+ _a.trys.push([6, 9, , 10]);
294
+ return [4, fetch("".concat(api.api, "/wishlists/").concat(state.wishlist.id, "/save"), {
295
+ method: 'POST',
296
+ headers: {
297
+ Authorization: "Bearer ".concat(api.token),
298
+ 'Content-Type': 'application/json',
299
+ 'x-gng-ecomm-token': api.userToken
300
+ },
301
+ body: JSON.stringify(state.wishlist)
302
+ })];
303
+ case 7:
304
+ request = _a.sent();
305
+ if (!!!request)
306
+ return [2];
307
+ return [4, request.json()];
308
+ case 8:
309
+ responseData = _a.sent();
310
+ if (responseData.status != 200) {
311
+ throw new Error('Impossible de fetch la wishlist: ' + responseData.error);
312
+ }
313
+ if (responseData.token) {
314
+ sdk.setUserToken(responseData.token);
315
+ }
316
+ return [3, 10];
317
+ case 9:
318
+ err_2 = _a.sent();
319
+ console.log(err_2);
320
+ return [3, 10];
321
+ case 10: return [2];
322
+ }
323
+ });
324
+ }); };
325
+ return ((0, jsx_runtime_1.jsx)(_1.default.Provider, __assign({ value: __assign(__assign({}, state), { isFetching: isFetching, addItem: addItem, removeItem: removeItem, clear: clear }) }, { children: (0, jsx_runtime_1.jsx)(react_1.Fragment, { children: children }) })));
326
+ }
327
+ exports.default = WishlistContextProvider;
328
328
  //# sourceMappingURL=WishlistContextProvider.js.map