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