@crystaldesign/basket-handler 26.7.0-beta.9 → 26.8.0-beta.1
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.
- package/build/cjs/index.js +422 -88
- package/build/esm/index.js +422 -88
- package/build/types/basket-handler/src/index.d.ts +13 -0
- package/build/types/basket-handler/src/index.d.ts.map +1 -1
- package/build/types/basket-handler/src/types.d.ts +43 -1
- package/build/types/basket-handler/src/types.d.ts.map +1 -1
- package/package.json +2 -2
package/build/cjs/index.js
CHANGED
|
@@ -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: "
|
|
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
|
|
66
|
-
var
|
|
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,
|
|
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
|
-
|
|
374
|
+
_context3.next = 4;
|
|
73
375
|
break;
|
|
74
376
|
}
|
|
75
|
-
(_this$
|
|
76
|
-
return
|
|
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
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
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
|
-
|
|
88
|
-
|
|
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$
|
|
416
|
+
'X-Configurator-Id': (_DivaUtils$Configurat2 = DivaUtils__default["default"].ConfigurationId) !== null && _DivaUtils$Configurat2 !== void 0 ? _DivaUtils$Configurat2 : ''
|
|
93
417
|
})
|
|
94
418
|
});
|
|
95
|
-
case
|
|
96
|
-
response =
|
|
97
|
-
|
|
419
|
+
case 22:
|
|
420
|
+
response = _context3.sent;
|
|
421
|
+
_context3.next = 25;
|
|
98
422
|
return response.data;
|
|
99
|
-
case
|
|
100
|
-
resultBasket =
|
|
423
|
+
case 25:
|
|
424
|
+
resultBasket = _context3.sent;
|
|
425
|
+
if (uploadRefs.length > 0) {
|
|
426
|
+
this.syncUploadedUrlsToLocalBasket(basket, resultBasket, uploadRefs);
|
|
427
|
+
}
|
|
101
428
|
if (!saveToApi2) {
|
|
102
|
-
|
|
429
|
+
_context3.next = 34;
|
|
103
430
|
break;
|
|
104
431
|
}
|
|
105
|
-
|
|
432
|
+
_context3.next = 30;
|
|
106
433
|
return this.api2SaveBasket({
|
|
107
|
-
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
|
|
115
|
-
api2Result =
|
|
116
|
-
|
|
117
|
-
|
|
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
|
-
|
|
126
|
-
return
|
|
127
|
-
case
|
|
128
|
-
|
|
129
|
-
|
|
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
|
|
134
|
-
case
|
|
135
|
-
(
|
|
136
|
-
|
|
137
|
-
|
|
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
|
|
473
|
+
return _context3.stop();
|
|
140
474
|
}
|
|
141
|
-
},
|
|
475
|
+
}, _callee3, this, [[7, 38]]);
|
|
142
476
|
}));
|
|
143
|
-
function saveBasket(
|
|
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
|
|
152
|
-
var basket, sessionGuid, awaitPDF, _id, _this$
|
|
153
|
-
return _regeneratorRuntime__default["default"].wrap(function
|
|
154
|
-
while (1) switch (
|
|
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 =
|
|
490
|
+
basket = _ref3.basket, sessionGuid = _ref3.sessionGuid, awaitPDF = _ref3.awaitPDF, _id = _ref3._id;
|
|
157
491
|
if (basket.getAsJson().DivaNr) {
|
|
158
|
-
|
|
492
|
+
_context4.next = 4;
|
|
159
493
|
break;
|
|
160
494
|
}
|
|
161
|
-
(_this$
|
|
162
|
-
return
|
|
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
|
-
|
|
499
|
+
_context4.next = 7;
|
|
166
500
|
break;
|
|
167
501
|
}
|
|
168
|
-
(_this$
|
|
169
|
-
return
|
|
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
|
-
|
|
173
|
-
|
|
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$
|
|
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 =
|
|
524
|
+
response = _context4.sent;
|
|
191
525
|
if (!(response.Error || (_response$Result = response.Result) !== null && _response$Result !== void 0 && _response$Result.startsWith('Error'))) {
|
|
192
|
-
|
|
526
|
+
_context4.next = 15;
|
|
193
527
|
break;
|
|
194
528
|
}
|
|
195
|
-
(_this$
|
|
196
|
-
return
|
|
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
|
-
|
|
532
|
+
_context4.next = 21;
|
|
199
533
|
break;
|
|
200
534
|
case 17:
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
(_this$
|
|
204
|
-
return
|
|
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
|
|
540
|
+
return _context4.abrupt("return", undefined);
|
|
207
541
|
case 22:
|
|
208
542
|
case "end":
|
|
209
|
-
return
|
|
543
|
+
return _context4.stop();
|
|
210
544
|
}
|
|
211
|
-
},
|
|
545
|
+
}, _callee4, this, [[8, 17]]);
|
|
212
546
|
}));
|
|
213
|
-
function api2SaveBasket(
|
|
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
|
|
222
|
-
var serviceUrl, organizationId, jwt, divaNr, documentVersion, body, _this$
|
|
223
|
-
return _regeneratorRuntime__default["default"].wrap(function
|
|
224
|
-
while (1) switch (
|
|
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 =
|
|
227
|
-
|
|
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
|
-
|
|
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
|
-
|
|
578
|
+
_context5.next = 11;
|
|
245
579
|
break;
|
|
246
580
|
case 7:
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
(_this$
|
|
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
|
|
587
|
+
return _context5.stop();
|
|
254
588
|
}
|
|
255
|
-
},
|
|
589
|
+
}, _callee5, this, [[1, 7]]);
|
|
256
590
|
}));
|
|
257
|
-
function setOrdered(
|
|
591
|
+
function setOrdered(_x6) {
|
|
258
592
|
return _setOrdered.apply(this, arguments);
|
|
259
593
|
}
|
|
260
594
|
return setOrdered;
|