@crystaldesign/basket-handler 26.7.0-beta.8 → 26.7.0-rc.0

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.
@@ -34,6 +34,9 @@ var DivaUtils__default = /*#__PURE__*/_interopDefaultLegacy(DivaUtils);
34
34
 
35
35
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
36
36
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty__default["default"](e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
37
+ function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
38
+ function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
39
+ function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
37
40
  var BASKET_SAVE_ERROR = /*#__PURE__*/function (BASKET_SAVE_ERROR) {
38
41
  BASKET_SAVE_ERROR["ERROR_NO_BASKET_SAVED"] = "ERROR_NO_BASKET_SAVED";
39
42
  BASKET_SAVE_ERROR["ERROR_BASKET_AFTER_SAVE"] = "ERROR_BASKET_AFTER_SAVE";
@@ -60,87 +63,418 @@ var BasketHandler = /*#__PURE__*/function () {
60
63
  return this._api2Url;
61
64
  }
62
65
  }, {
63
- key: "saveBasket",
66
+ key: "getAuthHeader",
67
+ value: function getAuthHeader(jwt, apiKey) {
68
+ if (jwt) return {
69
+ Authorization: 'Bearer ' + jwt
70
+ };
71
+ if (apiKey) return {
72
+ 'X-API-KEY': apiKey
73
+ };
74
+ return undefined;
75
+ }
76
+ }, {
77
+ key: "getUploadTupleKey",
78
+ value: function getUploadTupleKey(upload) {
79
+ var _upload$setImagesId, _upload$variantId;
80
+ return "".concat(upload.slot, "|").concat(upload.setId, "|").concat((_upload$setImagesId = upload.setImagesId) !== null && _upload$setImagesId !== void 0 ? _upload$setImagesId : '', "|").concat((_upload$variantId = upload.variantId) !== null && _upload$variantId !== void 0 ? _upload$variantId : '');
81
+ }
82
+
83
+ /**
84
+ * Mirror the CDN URLs the backend wrote into the saved basket back onto the
85
+ * in-memory basket the UI still holds. Without this, after save the local
86
+ * Set2DImage / SetImages[].URL stay empty (they were sent empty) and the
87
+ * transient preview URLs get cleared, so 2D/AI images disappear from the
88
+ * checkout. Mirrors the backend resolveUploadTarget routing, incl. variants.
89
+ */
90
+ }, {
91
+ key: "syncUploadedUrlsToLocalBasket",
92
+ value: function syncUploadedUrlsToLocalBasket(localBasket, savedBasketJson, uploadRefs) {
93
+ var _savedBasketJson$Orde;
94
+ if (!(savedBasketJson !== null && savedBasketJson !== void 0 && (_savedBasketJson$Orde = savedBasketJson.OrderSets) !== null && _savedBasketJson$Orde !== void 0 && _savedBasketJson$Orde.length) || !uploadRefs.length) return;
95
+ var _iterator = _createForOfIteratorHelper(uploadRefs),
96
+ _step;
97
+ try {
98
+ var _loop = function _loop() {
99
+ var _localBasket$OrderSet, _savedBasketJson$Orde2, _localSet$SetImages, _savedSet$SetImages;
100
+ var uploadRef = _step.value;
101
+ var localSet = (_localBasket$OrderSet = localBasket.OrderSets) === null || _localBasket$OrderSet === void 0 ? void 0 : _localBasket$OrderSet.find(function (orderSet) {
102
+ return orderSet.SetID === uploadRef.setId;
103
+ });
104
+ var savedSet = (_savedBasketJson$Orde2 = savedBasketJson.OrderSets) === null || _savedBasketJson$Orde2 === void 0 ? void 0 : _savedBasketJson$Orde2.find(function (orderSet) {
105
+ return orderSet.SetID === uploadRef.setId;
106
+ });
107
+ if (!localSet || !savedSet) return 0; // continue
108
+ if (uploadRef.slot === 'planning2D') {
109
+ if (uploadRef.variantId !== undefined) {
110
+ var _localSet$ConfigVaria, _savedSet$ConfigVaria;
111
+ var localVariant = (_localSet$ConfigVaria = localSet.ConfigVariants) === null || _localSet$ConfigVaria === void 0 ? void 0 : _localSet$ConfigVaria.find(function (variant) {
112
+ return variant.VariantID === uploadRef.variantId;
113
+ });
114
+ var savedVariant = (_savedSet$ConfigVaria = savedSet.ConfigVariants) === null || _savedSet$ConfigVaria === void 0 ? void 0 : _savedSet$ConfigVaria.find(function (variant) {
115
+ return variant.VariantID === uploadRef.variantId;
116
+ });
117
+ if (localVariant && savedVariant !== null && savedVariant !== void 0 && savedVariant.Set2DImage) {
118
+ localVariant.Set2DImage = savedVariant.Set2DImage;
119
+ }
120
+ return 0; // continue
121
+ }
122
+ if (savedSet.Set2DImage) {
123
+ localSet.Set2DImage = savedSet.Set2DImage;
124
+ }
125
+ return 0; // continue
126
+ }
127
+ var localImage = (_localSet$SetImages = localSet.SetImages) === null || _localSet$SetImages === void 0 ? void 0 : _localSet$SetImages.find(function (setImage) {
128
+ return setImage.Id === uploadRef.setImagesId;
129
+ });
130
+ var savedImage = (_savedSet$SetImages = savedSet.SetImages) === null || _savedSet$SetImages === void 0 ? void 0 : _savedSet$SetImages.find(function (setImage) {
131
+ return setImage.Id === uploadRef.setImagesId;
132
+ });
133
+ if (localImage && savedImage !== null && savedImage !== void 0 && savedImage.URL) {
134
+ localImage.URL = savedImage.URL;
135
+ }
136
+ },
137
+ _ret;
138
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
139
+ _ret = _loop();
140
+ if (_ret === 0) continue;
141
+ }
142
+ } catch (err) {
143
+ _iterator.e(err);
144
+ } finally {
145
+ _iterator.f();
146
+ }
147
+ }
148
+ }, {
149
+ key: "validateAndFilterPendingUploads",
150
+ value: function validateAndFilterPendingUploads(basket) {
151
+ var _basket$OrderSets, _basket$OrderSets2;
152
+ var pendingUploads = basket.listPendingUploads();
153
+ var knownSetIds = new Set(((_basket$OrderSets = basket.OrderSets) !== null && _basket$OrderSets !== void 0 ? _basket$OrderSets : []).map(function (orderSet) {
154
+ return orderSet.SetID;
155
+ }));
156
+ var validSetImagesIdsBySet = new Map();
157
+ var validVariantIdsBySet = new Map();
158
+ var _iterator2 = _createForOfIteratorHelper((_basket$OrderSets2 = basket.OrderSets) !== null && _basket$OrderSets2 !== void 0 ? _basket$OrderSets2 : []),
159
+ _step2;
160
+ try {
161
+ for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
162
+ var _orderSet$SetImages, _orderSet$ConfigVaria;
163
+ var orderSet = _step2.value;
164
+ validSetImagesIdsBySet.set(orderSet.SetID, new Set(((_orderSet$SetImages = orderSet.SetImages) !== null && _orderSet$SetImages !== void 0 ? _orderSet$SetImages : []).map(function (setImage) {
165
+ return setImage === null || setImage === void 0 ? void 0 : setImage.Id;
166
+ }).filter(function (id) {
167
+ return !!id;
168
+ })));
169
+ validVariantIdsBySet.set(orderSet.SetID, new Set(((_orderSet$ConfigVaria = orderSet.ConfigVariants) !== null && _orderSet$ConfigVaria !== void 0 ? _orderSet$ConfigVaria : []).map(function (variant) {
170
+ return variant === null || variant === void 0 ? void 0 : variant.VariantID;
171
+ }).filter(function (id) {
172
+ return id !== undefined && id !== null;
173
+ })));
174
+ }
175
+
176
+ // planning2D is unique per (setId, variantId): the main configuration and
177
+ // each ConfigVariant of a set may carry its own 2D image.
178
+ } catch (err) {
179
+ _iterator2.e(err);
180
+ } finally {
181
+ _iterator2.f();
182
+ }
183
+ var planning2DTargets = new Set();
184
+ var seenTuples = new Set();
185
+ var filteredUploads = [];
186
+ var _iterator3 = _createForOfIteratorHelper(pendingUploads),
187
+ _step3;
188
+ try {
189
+ for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
190
+ var pendingUpload = _step3.value;
191
+ if (pendingUpload.slot === 'planning2D') {
192
+ var _validVariantIdsBySet, _pendingUpload$varian;
193
+ if (!knownSetIds.has(pendingUpload.setId)) {
194
+ throw new Error('planning2D pending upload setId does not exist in basket OrderSets');
195
+ }
196
+ if (pendingUpload.variantId !== undefined && !((_validVariantIdsBySet = validVariantIdsBySet.get(pendingUpload.setId)) !== null && _validVariantIdsBySet !== void 0 && _validVariantIdsBySet.has(pendingUpload.variantId))) {
197
+ throw new Error('planning2D pending upload variantId does not exist in matching OrderSet.ConfigVariants');
198
+ }
199
+ var planning2DTargetKey = "".concat(pendingUpload.setId, "|").concat((_pendingUpload$varian = pendingUpload.variantId) !== null && _pendingUpload$varian !== void 0 ? _pendingUpload$varian : '');
200
+ if (planning2DTargets.has(planning2DTargetKey)) {
201
+ throw new Error('Only one planning2D pending upload is allowed per setId/variantId');
202
+ }
203
+ planning2DTargets.add(planning2DTargetKey);
204
+ }
205
+ if (pendingUpload.slot === 'aiImage') {
206
+ if (!pendingUpload.setImagesId) {
207
+ var _this$LOG;
208
+ (_this$LOG = this.LOG) === null || _this$LOG === void 0 || _this$LOG.warn('Skipping aiImage pending upload without setImagesId');
209
+ continue;
210
+ }
211
+ var setImagesIds = validSetImagesIdsBySet.get(pendingUpload.setId);
212
+ if (!(setImagesIds !== null && setImagesIds !== void 0 && setImagesIds.has(pendingUpload.setImagesId))) {
213
+ throw new Error('aiImage pending upload setImagesId does not exist in matching OrderSet.SetImages');
214
+ }
215
+ }
216
+ var tupleKey = this.getUploadTupleKey(pendingUpload);
217
+ if (seenTuples.has(tupleKey)) {
218
+ throw new Error('Duplicate pending upload tuple detected');
219
+ }
220
+ seenTuples.add(tupleKey);
221
+ filteredUploads.push(pendingUpload);
222
+ }
223
+ } catch (err) {
224
+ _iterator3.e(err);
225
+ } finally {
226
+ _iterator3.f();
227
+ }
228
+ return filteredUploads;
229
+ }
230
+ }, {
231
+ key: "initUploads",
64
232
  value: function () {
65
- var _saveBasket = _asyncToGenerator__default["default"](/*#__PURE__*/_regeneratorRuntime__default["default"].mark(function _callee(_ref) {
66
- var jwt, basket, awaitPDF, utmCampaign, saveToApi2, sessionGuid, apiKey, _this$LOG, fullUrl, response, _DivaUtils$Configurat, _api2Result, authHeader, resultBasket, api2Result, _e$response, _e$response2, _this$LOG4, _this$LOG2, _this$LOG3;
233
+ var _initUploads = _asyncToGenerator__default["default"](/*#__PURE__*/_regeneratorRuntime__default["default"].mark(function _callee(_ref) {
234
+ var _DivaUtils$Configurat, _initResponse$data$ti, _initResponse$data;
235
+ var jwt, apiKey, basket, pendingUploads, authHeader, initUrl, initItems, initResponse;
67
236
  return _regeneratorRuntime__default["default"].wrap(function _callee$(_context) {
68
237
  while (1) switch (_context.prev = _context.next) {
69
238
  case 0:
70
- jwt = _ref.jwt, basket = _ref.basket, awaitPDF = _ref.awaitPDF, utmCampaign = _ref.utmCampaign, saveToApi2 = _ref.saveToApi2, sessionGuid = _ref.sessionGuid, apiKey = _ref.apiKey;
239
+ jwt = _ref.jwt, apiKey = _ref.apiKey, basket = _ref.basket, pendingUploads = _ref.pendingUploads;
240
+ authHeader = this.getAuthHeader(jwt, apiKey);
241
+ initUrl = this.basketService + '/v1/baskets/save/uploads/init';
242
+ initItems = pendingUploads.map(function (pendingUpload) {
243
+ return {
244
+ slot: pendingUpload.slot,
245
+ setId: pendingUpload.setId,
246
+ setImagesId: pendingUpload.setImagesId,
247
+ variantId: pendingUpload.variantId,
248
+ fileName: pendingUpload.fileName,
249
+ mimeType: pendingUpload.mimeType,
250
+ size: pendingUpload.size
251
+ };
252
+ });
253
+ _context.next = 6;
254
+ return axios__default["default"].post(initUrl, JSON.stringify({
255
+ organizationId: basket.OrganizationId,
256
+ uploads: initItems
257
+ }), {
258
+ headers: _objectSpread(_objectSpread({}, authHeader), {}, {
259
+ 'Content-Type': 'application/json',
260
+ 'X-Session-Id': DivaUtils__default["default"].SessionId,
261
+ 'X-Configurator-Id': (_DivaUtils$Configurat = DivaUtils__default["default"].ConfigurationId) !== null && _DivaUtils$Configurat !== void 0 ? _DivaUtils$Configurat : ''
262
+ })
263
+ });
264
+ case 6:
265
+ initResponse = _context.sent;
266
+ return _context.abrupt("return", (_initResponse$data$ti = (_initResponse$data = initResponse.data) === null || _initResponse$data === void 0 ? void 0 : _initResponse$data.tickets) !== null && _initResponse$data$ti !== void 0 ? _initResponse$data$ti : []);
267
+ case 8:
268
+ case "end":
269
+ return _context.stop();
270
+ }
271
+ }, _callee, this);
272
+ }));
273
+ function initUploads(_x) {
274
+ return _initUploads.apply(this, arguments);
275
+ }
276
+ return initUploads;
277
+ }()
278
+ }, {
279
+ key: "uploadPendingFiles",
280
+ value: function () {
281
+ var _uploadPendingFiles = _asyncToGenerator__default["default"](/*#__PURE__*/_regeneratorRuntime__default["default"].mark(function _callee2(pendingUploads, tickets) {
282
+ var uploadTicketsByTuple, _iterator4, _step4, ticket, uploadRefs, _iterator5, _step5, _ticket$simpleUpload, _ticket$simpleUpload2, _ticket$simpleUpload$, pendingUpload, _ticket, uploadResponse;
283
+ return _regeneratorRuntime__default["default"].wrap(function _callee2$(_context2) {
284
+ while (1) switch (_context2.prev = _context2.next) {
285
+ case 0:
286
+ uploadTicketsByTuple = new Map();
287
+ _iterator4 = _createForOfIteratorHelper(tickets);
288
+ try {
289
+ for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
290
+ ticket = _step4.value;
291
+ uploadTicketsByTuple.set(this.getUploadTupleKey(ticket), ticket);
292
+ }
293
+ } catch (err) {
294
+ _iterator4.e(err);
295
+ } finally {
296
+ _iterator4.f();
297
+ }
298
+ uploadRefs = [];
299
+ _iterator5 = _createForOfIteratorHelper(pendingUploads);
300
+ _context2.prev = 5;
301
+ _iterator5.s();
302
+ case 7:
303
+ if ((_step5 = _iterator5.n()).done) {
304
+ _context2.next = 20;
305
+ break;
306
+ }
307
+ pendingUpload = _step5.value;
308
+ _ticket = uploadTicketsByTuple.get(this.getUploadTupleKey(pendingUpload));
309
+ if (!(!(_ticket !== null && _ticket !== void 0 && _ticket.uploadId) || !((_ticket$simpleUpload = _ticket.simpleUpload) !== null && _ticket$simpleUpload !== void 0 && _ticket$simpleUpload.url) || !((_ticket$simpleUpload2 = _ticket.simpleUpload) !== null && _ticket$simpleUpload2 !== void 0 && _ticket$simpleUpload2.method))) {
310
+ _context2.next = 12;
311
+ break;
312
+ }
313
+ throw new Error('Missing upload ticket for pending basket upload');
314
+ case 12:
315
+ _context2.next = 14;
316
+ return fetch(_ticket.simpleUpload.url, {
317
+ method: _ticket.simpleUpload.method,
318
+ headers: (_ticket$simpleUpload$ = _ticket.simpleUpload.headers) !== null && _ticket$simpleUpload$ !== void 0 ? _ticket$simpleUpload$ : {},
319
+ body: pendingUpload.blob
320
+ });
321
+ case 14:
322
+ uploadResponse = _context2.sent;
323
+ if (uploadResponse.ok) {
324
+ _context2.next = 17;
325
+ break;
326
+ }
327
+ throw new Error('Direct storage upload failed');
328
+ case 17:
329
+ uploadRefs.push({
330
+ slot: pendingUpload.slot,
331
+ setId: pendingUpload.setId,
332
+ setImagesId: pendingUpload.setImagesId,
333
+ variantId: pendingUpload.variantId,
334
+ fileName: pendingUpload.fileName,
335
+ uploadId: _ticket.uploadId
336
+ });
337
+ case 18:
338
+ _context2.next = 7;
339
+ break;
340
+ case 20:
341
+ _context2.next = 25;
342
+ break;
343
+ case 22:
344
+ _context2.prev = 22;
345
+ _context2.t0 = _context2["catch"](5);
346
+ _iterator5.e(_context2.t0);
347
+ case 25:
348
+ _context2.prev = 25;
349
+ _iterator5.f();
350
+ return _context2.finish(25);
351
+ case 28:
352
+ return _context2.abrupt("return", uploadRefs);
353
+ case 29:
354
+ case "end":
355
+ return _context2.stop();
356
+ }
357
+ }, _callee2, this, [[5, 22, 25, 28]]);
358
+ }));
359
+ function uploadPendingFiles(_x2, _x3) {
360
+ return _uploadPendingFiles.apply(this, arguments);
361
+ }
362
+ return uploadPendingFiles;
363
+ }()
364
+ }, {
365
+ key: "saveBasket",
366
+ value: function () {
367
+ var _saveBasket = _asyncToGenerator__default["default"](/*#__PURE__*/_regeneratorRuntime__default["default"].mark(function _callee3(_ref2) {
368
+ var jwt, basket, awaitPDF, utmCampaign, saveToApi2, sessionGuid, apiKey, _this$LOG2, fullUrl, response, _DivaUtils$Configurat2, authHeader, pendingUploads, uploadRefs, uploadTickets, saveRequestBody, resultBasket, api2Result, _e$response, _e$response2, _this$LOG5, _this$LOG3, _this$LOG4;
369
+ return _regeneratorRuntime__default["default"].wrap(function _callee3$(_context3) {
370
+ while (1) switch (_context3.prev = _context3.next) {
371
+ case 0:
372
+ jwt = _ref2.jwt, basket = _ref2.basket, awaitPDF = _ref2.awaitPDF, utmCampaign = _ref2.utmCampaign, saveToApi2 = _ref2.saveToApi2, sessionGuid = _ref2.sessionGuid, apiKey = _ref2.apiKey;
71
373
  if (basket.DivaNr) {
72
- _context.next = 4;
374
+ _context3.next = 4;
73
375
  break;
74
376
  }
75
- (_this$LOG = this.LOG) === null || _this$LOG === void 0 || _this$LOG.error('Saving Basket Failed. Error: DivaNr is empty', 'SELLER_0003');
76
- return _context.abrupt("return", BASKET_SAVE_ERROR.ERROR_NO_BASKET_SAVED);
377
+ (_this$LOG2 = this.LOG) === null || _this$LOG2 === void 0 || _this$LOG2.error('Saving Basket Failed. Error: DivaNr is empty', 'SELLER_0003');
378
+ return _context3.abrupt("return", BASKET_SAVE_ERROR.ERROR_NO_BASKET_SAVED);
77
379
  case 4:
78
- fullUrl = new URL(this.basketService + '/baskets');
380
+ fullUrl = new URL(this.basketService + '/v1/baskets/save');
79
381
  if (awaitPDF != undefined) fullUrl.searchParams.append('awaitPDF', awaitPDF.toString());
80
382
  if (utmCampaign) fullUrl.searchParams.append('utmCampaign', utmCampaign);
81
- _context.prev = 7;
82
- if (jwt) authHeader = {
83
- Authorization: 'Bearer ' + jwt
84
- };else if (apiKey) authHeader = {
85
- 'X-API-KEY': apiKey
383
+ _context3.prev = 7;
384
+ authHeader = this.getAuthHeader(jwt, apiKey);
385
+ pendingUploads = this.validateAndFilterPendingUploads(basket);
386
+ uploadRefs = [];
387
+ if (!(pendingUploads.length > 0)) {
388
+ _context3.next = 18;
389
+ break;
390
+ }
391
+ _context3.next = 14;
392
+ return this.initUploads({
393
+ jwt: jwt,
394
+ apiKey: apiKey,
395
+ basket: basket,
396
+ pendingUploads: pendingUploads
397
+ });
398
+ case 14:
399
+ uploadTickets = _context3.sent;
400
+ _context3.next = 17;
401
+ return this.uploadPendingFiles(pendingUploads, uploadTickets);
402
+ case 17:
403
+ uploadRefs = _context3.sent;
404
+ case 18:
405
+ saveRequestBody = {
406
+ basket: basket.getAsJson()
86
407
  };
87
- _context.next = 11;
88
- return axios__default["default"].post(fullUrl.toString(), JSON.stringify(basket.getAsJson()), {
408
+ if (uploadRefs.length > 0) {
409
+ saveRequestBody.uploads = uploadRefs;
410
+ }
411
+ _context3.next = 22;
412
+ return axios__default["default"].post(fullUrl.toString(), JSON.stringify(saveRequestBody), {
89
413
  headers: _objectSpread(_objectSpread({}, authHeader), {}, {
90
414
  'Content-Type': 'application/json',
91
415
  'X-Session-Id': DivaUtils__default["default"].SessionId,
92
- 'X-Configurator-Id': (_DivaUtils$Configurat = DivaUtils__default["default"].ConfigurationId) !== null && _DivaUtils$Configurat !== void 0 ? _DivaUtils$Configurat : ''
416
+ 'X-Configurator-Id': (_DivaUtils$Configurat2 = DivaUtils__default["default"].ConfigurationId) !== null && _DivaUtils$Configurat2 !== void 0 ? _DivaUtils$Configurat2 : ''
93
417
  })
94
418
  });
95
- case 11:
96
- response = _context.sent;
97
- _context.next = 14;
419
+ case 22:
420
+ response = _context3.sent;
421
+ _context3.next = 25;
98
422
  return response.data;
99
- case 14:
100
- resultBasket = _context.sent;
423
+ case 25:
424
+ resultBasket = _context3.sent;
425
+ if (uploadRefs.length > 0) {
426
+ this.syncUploadedUrlsToLocalBasket(basket, resultBasket, uploadRefs);
427
+ }
101
428
  if (!saveToApi2) {
102
- _context.next = 19;
429
+ _context3.next = 34;
103
430
  break;
104
431
  }
105
- _context.next = 18;
432
+ _context3.next = 30;
106
433
  return this.api2SaveBasket({
107
- basket: basket,
434
+ basket: resultBasket,
108
435
  sessionGuid: sessionGuid,
109
436
  awaitPDF: awaitPDF,
110
437
  jwt: jwt,
111
438
  saveToApi2: saveToApi2,
112
439
  _id: resultBasket._id
113
440
  });
114
- case 18:
115
- api2Result = _context.sent;
116
- case 19:
117
- return _context.abrupt("return", (_api2Result = api2Result) !== null && _api2Result !== void 0 ? _api2Result : resultBasket);
118
- case 22:
119
- _context.prev = 22;
120
- _context.t0 = _context["catch"](7);
121
- if (!(((_e$response = _context.t0.response) === null || _e$response === void 0 ? void 0 : _e$response.status) === 409)) {
122
- _context.next = 29;
441
+ case 30:
442
+ api2Result = _context3.sent;
443
+ if (!api2Result) {
444
+ _context3.next = 34;
123
445
  break;
124
446
  }
125
- (_this$LOG2 = this.LOG) === null || _this$LOG2 === void 0 || _this$LOG2.error('Saving Basket failed - Entity already exists.');
126
- return _context.abrupt("return", BASKET_SAVE_ERROR.ERROR_NO_BASKET_SAVED_ENTITY_EXISTS);
127
- case 29:
128
- if (!(((_e$response2 = _context.t0.response) === null || _e$response2 === void 0 ? void 0 : _e$response2.status) !== 201)) {
129
- _context.next = 32;
447
+ basket.clearPendingUploads();
448
+ return _context3.abrupt("return", api2Result);
449
+ case 34:
450
+ basket.clearPendingUploads();
451
+ return _context3.abrupt("return", resultBasket);
452
+ case 38:
453
+ _context3.prev = 38;
454
+ _context3.t0 = _context3["catch"](7);
455
+ if (!(((_e$response = _context3.t0.response) === null || _e$response === void 0 ? void 0 : _e$response.status) === 409)) {
456
+ _context3.next = 45;
130
457
  break;
131
458
  }
132
- (_this$LOG3 = this.LOG) === null || _this$LOG3 === void 0 || _this$LOG3.error('Saving Basket failed.');
133
- return _context.abrupt("return", BASKET_SAVE_ERROR.ERROR_NO_BASKET_SAVED);
134
- case 32:
135
- (_this$LOG4 = this.LOG) === null || _this$LOG4 === void 0 || _this$LOG4.error('Saving Basket Failed. serverError ' + _context.t0.message, 'SELLER_0003');
136
- return _context.abrupt("return", BASKET_SAVE_ERROR.ERROR_NO_BASKET_SAVED);
137
- case 34:
459
+ (_this$LOG3 = this.LOG) === null || _this$LOG3 === void 0 || _this$LOG3.error('Saving Basket failed - Entity already exists.');
460
+ return _context3.abrupt("return", BASKET_SAVE_ERROR.ERROR_NO_BASKET_SAVED_ENTITY_EXISTS);
461
+ case 45:
462
+ if (!(((_e$response2 = _context3.t0.response) === null || _e$response2 === void 0 ? void 0 : _e$response2.status) !== 201)) {
463
+ _context3.next = 48;
464
+ break;
465
+ }
466
+ (_this$LOG4 = this.LOG) === null || _this$LOG4 === void 0 || _this$LOG4.error('Saving Basket failed.');
467
+ return _context3.abrupt("return", BASKET_SAVE_ERROR.ERROR_NO_BASKET_SAVED);
468
+ case 48:
469
+ (_this$LOG5 = this.LOG) === null || _this$LOG5 === void 0 || _this$LOG5.error('Saving Basket Failed. serverError ' + _context3.t0.message, 'SELLER_0003');
470
+ return _context3.abrupt("return", BASKET_SAVE_ERROR.ERROR_NO_BASKET_SAVED);
471
+ case 50:
138
472
  case "end":
139
- return _context.stop();
473
+ return _context3.stop();
140
474
  }
141
- }, _callee, this, [[7, 22]]);
475
+ }, _callee3, this, [[7, 38]]);
142
476
  }));
143
- function saveBasket(_x) {
477
+ function saveBasket(_x4) {
144
478
  return _saveBasket.apply(this, arguments);
145
479
  }
146
480
  return saveBasket;
@@ -148,29 +482,29 @@ var BasketHandler = /*#__PURE__*/function () {
148
482
  }, {
149
483
  key: "api2SaveBasket",
150
484
  value: function () {
151
- var _api2SaveBasket = _asyncToGenerator__default["default"](/*#__PURE__*/_regeneratorRuntime__default["default"].mark(function _callee2(_ref2) {
152
- var basket, sessionGuid, awaitPDF, _id, _this$LOG5, _this$LOG6, fullUrl, response, _DivaUtils$Configurat2, _response$Result, _this$LOG7, _this$LOG8;
153
- return _regeneratorRuntime__default["default"].wrap(function _callee2$(_context2) {
154
- while (1) switch (_context2.prev = _context2.next) {
485
+ var _api2SaveBasket = _asyncToGenerator__default["default"](/*#__PURE__*/_regeneratorRuntime__default["default"].mark(function _callee4(_ref3) {
486
+ var basket, sessionGuid, awaitPDF, _id, _this$LOG6, _this$LOG7, fullUrl, response, _DivaUtils$Configurat3, _response$Result, _this$LOG8, _this$LOG9;
487
+ return _regeneratorRuntime__default["default"].wrap(function _callee4$(_context4) {
488
+ while (1) switch (_context4.prev = _context4.next) {
155
489
  case 0:
156
- basket = _ref2.basket, sessionGuid = _ref2.sessionGuid, awaitPDF = _ref2.awaitPDF, _id = _ref2._id;
490
+ basket = _ref3.basket, sessionGuid = _ref3.sessionGuid, awaitPDF = _ref3.awaitPDF, _id = _ref3._id;
157
491
  if (basket.getAsJson().DivaNr) {
158
- _context2.next = 4;
492
+ _context4.next = 4;
159
493
  break;
160
494
  }
161
- (_this$LOG5 = this.LOG) === null || _this$LOG5 === void 0 || _this$LOG5.error('Saving Basket Failed. Error: DivaNr is empty', 'SELLER_0003');
162
- return _context2.abrupt("return", BASKET_SAVE_ERROR.ERROR_BASKET_AFTER_SAVE);
495
+ (_this$LOG6 = this.LOG) === null || _this$LOG6 === void 0 || _this$LOG6.error('Saving Basket Failed. Error: DivaNr is empty', 'SELLER_0003');
496
+ return _context4.abrupt("return", BASKET_SAVE_ERROR.ERROR_BASKET_AFTER_SAVE);
163
497
  case 4:
164
498
  if (sessionGuid) {
165
- _context2.next = 7;
499
+ _context4.next = 7;
166
500
  break;
167
501
  }
168
- (_this$LOG6 = this.LOG) === null || _this$LOG6 === void 0 || _this$LOG6.error('Cant create api2 Basket without sessionguid');
169
- return _context2.abrupt("return", BASKET_SAVE_ERROR.ERROR_BASKET_AFTER_SAVE);
502
+ (_this$LOG7 = this.LOG) === null || _this$LOG7 === void 0 || _this$LOG7.error('Cant create api2 Basket without sessionguid');
503
+ return _context4.abrupt("return", BASKET_SAVE_ERROR.ERROR_BASKET_AFTER_SAVE);
170
504
  case 7:
171
505
  fullUrl = this.api2Url + '?function=SetJsonBasketData3' + '&callHeadlessBrowserAsync=' + (!awaitPDF ? '1' : '0');
172
- _context2.prev = 8;
173
- _context2.next = 11;
506
+ _context4.prev = 8;
507
+ _context4.next = 11;
174
508
  return axios__default["default"].post(fullUrl, JSON.stringify(_objectSpread(_objectSpread({}, basket), {}, {
175
509
  _id: _id
176
510
  })), {
@@ -178,7 +512,7 @@ var BasketHandler = /*#__PURE__*/function () {
178
512
  sessionGuid: sessionGuid,
179
513
  'Content-Type': 'application/json',
180
514
  'X-Session-Id': DivaUtils__default["default"].SessionId,
181
- 'X-Configurator-Id': (_DivaUtils$Configurat2 = DivaUtils__default["default"].ConfigurationId) !== null && _DivaUtils$Configurat2 !== void 0 ? _DivaUtils$Configurat2 : ''
515
+ 'X-Configurator-Id': (_DivaUtils$Configurat3 = DivaUtils__default["default"].ConfigurationId) !== null && _DivaUtils$Configurat3 !== void 0 ? _DivaUtils$Configurat3 : ''
182
516
  }
183
517
  }).then(function (res) {
184
518
  if (res.status !== 200) {
@@ -187,30 +521,30 @@ var BasketHandler = /*#__PURE__*/function () {
187
521
  return res.data;
188
522
  });
189
523
  case 11:
190
- response = _context2.sent;
524
+ response = _context4.sent;
191
525
  if (!(response.Error || (_response$Result = response.Result) !== null && _response$Result !== void 0 && _response$Result.startsWith('Error'))) {
192
- _context2.next = 15;
526
+ _context4.next = 15;
193
527
  break;
194
528
  }
195
- (_this$LOG7 = this.LOG) === null || _this$LOG7 === void 0 || _this$LOG7.error('Saving Basket Failed. serverError: ' + response.Error, 'SELLER_0003');
196
- return _context2.abrupt("return", BASKET_SAVE_ERROR.ERROR_BASKET_AFTER_SAVE);
529
+ (_this$LOG8 = this.LOG) === null || _this$LOG8 === void 0 || _this$LOG8.error('Saving Basket Failed. serverError: ' + response.Error, 'SELLER_0003');
530
+ return _context4.abrupt("return", BASKET_SAVE_ERROR.ERROR_BASKET_AFTER_SAVE);
197
531
  case 15:
198
- _context2.next = 21;
532
+ _context4.next = 21;
199
533
  break;
200
534
  case 17:
201
- _context2.prev = 17;
202
- _context2.t0 = _context2["catch"](8);
203
- (_this$LOG8 = this.LOG) === null || _this$LOG8 === void 0 || _this$LOG8.error('Saving Basket Failed. serverError ' + _context2.t0.message, 'SELLER_0003');
204
- return _context2.abrupt("return", BASKET_SAVE_ERROR.ERROR_BASKET_AFTER_SAVE);
535
+ _context4.prev = 17;
536
+ _context4.t0 = _context4["catch"](8);
537
+ (_this$LOG9 = this.LOG) === null || _this$LOG9 === void 0 || _this$LOG9.error('Saving Basket Failed. serverError ' + _context4.t0.message, 'SELLER_0003');
538
+ return _context4.abrupt("return", BASKET_SAVE_ERROR.ERROR_BASKET_AFTER_SAVE);
205
539
  case 21:
206
- return _context2.abrupt("return", undefined);
540
+ return _context4.abrupt("return", undefined);
207
541
  case 22:
208
542
  case "end":
209
- return _context2.stop();
543
+ return _context4.stop();
210
544
  }
211
- }, _callee2, this, [[8, 17]]);
545
+ }, _callee4, this, [[8, 17]]);
212
546
  }));
213
- function api2SaveBasket(_x2) {
547
+ function api2SaveBasket(_x5) {
214
548
  return _api2SaveBasket.apply(this, arguments);
215
549
  }
216
550
  return api2SaveBasket;
@@ -218,18 +552,18 @@ var BasketHandler = /*#__PURE__*/function () {
218
552
  }, {
219
553
  key: "setOrdered",
220
554
  value: function () {
221
- var _setOrdered = _asyncToGenerator__default["default"](/*#__PURE__*/_regeneratorRuntime__default["default"].mark(function _callee3(_ref3) {
222
- var serviceUrl, organizationId, jwt, divaNr, documentVersion, body, _this$LOG9;
223
- return _regeneratorRuntime__default["default"].wrap(function _callee3$(_context3) {
224
- while (1) switch (_context3.prev = _context3.next) {
555
+ var _setOrdered = _asyncToGenerator__default["default"](/*#__PURE__*/_regeneratorRuntime__default["default"].mark(function _callee5(_ref4) {
556
+ var serviceUrl, organizationId, jwt, divaNr, documentVersion, body, _this$LOG10;
557
+ return _regeneratorRuntime__default["default"].wrap(function _callee5$(_context5) {
558
+ while (1) switch (_context5.prev = _context5.next) {
225
559
  case 0:
226
- serviceUrl = _ref3.serviceUrl, organizationId = _ref3.organizationId, jwt = _ref3.jwt, divaNr = _ref3.divaNr, documentVersion = _ref3.documentVersion;
227
- _context3.prev = 1;
560
+ serviceUrl = _ref4.serviceUrl, organizationId = _ref4.organizationId, jwt = _ref4.jwt, divaNr = _ref4.divaNr, documentVersion = _ref4.documentVersion;
561
+ _context5.prev = 1;
228
562
  body = {
229
563
  divaNr: divaNr,
230
564
  version: documentVersion
231
565
  };
232
- _context3.next = 5;
566
+ _context5.next = 5;
233
567
  return fetch("".concat(serviceUrl, "/orders?organizationId=").concat(organizationId), {
234
568
  method: 'POST',
235
569
  headers: {
@@ -241,20 +575,20 @@ var BasketHandler = /*#__PURE__*/function () {
241
575
  return r.json();
242
576
  });
243
577
  case 5:
244
- _context3.next = 11;
578
+ _context5.next = 11;
245
579
  break;
246
580
  case 7:
247
- _context3.prev = 7;
248
- _context3.t0 = _context3["catch"](1);
249
- (_this$LOG9 = this.LOG) === null || _this$LOG9 === void 0 || _this$LOG9.error('Could not set OrderStatus: ' + _context3.t0.message);
581
+ _context5.prev = 7;
582
+ _context5.t0 = _context5["catch"](1);
583
+ (_this$LOG10 = this.LOG) === null || _this$LOG10 === void 0 || _this$LOG10.error('Could not set OrderStatus: ' + _context5.t0.message);
250
584
  throw new Error('DivaNr not found');
251
585
  case 11:
252
586
  case "end":
253
- return _context3.stop();
587
+ return _context5.stop();
254
588
  }
255
- }, _callee3, this, [[1, 7]]);
589
+ }, _callee5, this, [[1, 7]]);
256
590
  }));
257
- function setOrdered(_x3) {
591
+ function setOrdered(_x6) {
258
592
  return _setOrdered.apply(this, arguments);
259
593
  }
260
594
  return setOrdered;