@monterosa/sdk-interact-kit 0.18.2-rc.4 → 0.18.3-rc.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.
@@ -1,6 +1,8 @@
1
1
  import { login as login$1, getConnect as getConnect$1, disconnect, unsubscribe as unsubscribe$1, send, ConnState, connect, subscribe as subscribe$1, onConnected } from '@monterosa/sdk-connect-kit';
2
- import { Emitter, memoizePromise, subscribe as subscribe$2, now, onTick, checkAvailability, calculatePercentage, setItem, getItem, createError } from '@monterosa/sdk-util';
2
+ import { Emitter, memoizePromise, subscribe as subscribe$2, now, onTick, calculatePercentage, getErrorMessage, createError } from '@monterosa/sdk-util';
3
3
  import { getSdk } from '@monterosa/sdk-core';
4
+ import { fetchSettings } from '@monterosa/sdk-interact-interop';
5
+ import { storageRead, storageWrite } from '@monterosa/sdk-storage-kit';
4
6
 
5
7
  /*! *****************************************************************************
6
8
  Copyright (c) Microsoft Corporation.
@@ -493,33 +495,6 @@ function onConnectionHealthState(connectionHealth, callback) {
493
495
  return subscribe$2(connectionHealth, 'state', callback);
494
496
  }
495
497
 
496
- /**
497
- * @license
498
- * internal.ts
499
- * interact-kit
500
- *
501
- * Created by Rygor Kharytanovich <rygor@monterosa.co.uk> on 2022-02-15
502
- * Copyright © 2022 Monterosa. All rights reserved.
503
- *
504
- * More details on the license can be found at https://www.monterosa.co/sdk/license
505
- */
506
- function fetchSettings(host, id) {
507
- return __awaiter(this, void 0, void 0, function () {
508
- var response, data;
509
- return __generator(this, function (_a) {
510
- switch (_a.label) {
511
- case 0: return [4 /*yield*/, fetch("https://" + host + "/projects/" + id.substring(0, 2) + "/" + id + "/settings.json")];
512
- case 1:
513
- response = _a.sent();
514
- return [4 /*yield*/, response.json()];
515
- case 2:
516
- data = _a.sent();
517
- return [2 /*return*/, data];
518
- }
519
- });
520
- });
521
- }
522
-
523
498
  /**
524
499
  * @license
525
500
  * constants.ts
@@ -953,25 +928,6 @@ function getProject(sdk) {
953
928
  if (sdk === void 0) { sdk = getSdk(); }
954
929
  return getProjectMemoized(sdk);
955
930
  }
956
- /**
957
- * @internal
958
- */
959
- function fetchListings(host, projectId) {
960
- return __awaiter(this, void 0, void 0, function () {
961
- var response, data;
962
- return __generator(this, function (_a) {
963
- switch (_a.label) {
964
- case 0: return [4 /*yield*/, fetch("https://" + host + "/projects/" + projectId.substring(0, 2) + "/" + projectId + "/listings.json")];
965
- case 1:
966
- response = _a.sent();
967
- return [4 /*yield*/, response.json()];
968
- case 2:
969
- data = (_a.sent());
970
- return [2 /*return*/, data];
971
- }
972
- });
973
- });
974
- }
975
931
  /**
976
932
  * Adds an observer for when {@link InteractProject.fields | project fields}
977
933
  * are updated
@@ -2186,15 +2142,24 @@ var ElementImpl = /** @class */ (function (_super) {
2186
2142
  * More details on the license can be found at https://www.monterosa.co/sdk/license
2187
2143
  */
2188
2144
  var elements = new Map();
2189
- var storageAvailable = checkAvailability();
2190
2145
  function buildElement(options, context) {
2191
- if (elements.has(options.id)) {
2192
- return elements.get(options.id);
2193
- }
2194
- var element = new ElementImpl(options, context);
2195
- restoreAnswer(element);
2196
- elements.set(element.id, element);
2197
- return element;
2146
+ return __awaiter(this, void 0, void 0, function () {
2147
+ var element;
2148
+ return __generator(this, function (_a) {
2149
+ switch (_a.label) {
2150
+ case 0:
2151
+ if (elements.has(options.id)) {
2152
+ return [2 /*return*/, elements.get(options.id)];
2153
+ }
2154
+ element = new ElementImpl(options, context);
2155
+ return [4 /*yield*/, restoreAnswer(element)];
2156
+ case 1:
2157
+ _a.sent();
2158
+ elements.set(element.id, element);
2159
+ return [2 /*return*/, element];
2160
+ }
2161
+ });
2162
+ });
2198
2163
  }
2199
2164
  function getElementByPolld(pollId) {
2200
2165
  return Array.from(elements.values()).find(function (element) { return element.pollId === pollId; });
@@ -2293,19 +2258,21 @@ function handleCreateMessage(message) {
2293
2258
  if (event === null) {
2294
2259
  return [2 /*return*/];
2295
2260
  }
2296
- if (elements.has(options.id)) {
2297
- element = elements.get(options.id);
2298
- if (options.updated_at > element.updatedAt) {
2299
- element.update(options);
2300
- event.emit('update', element);
2301
- }
2302
- }
2303
- else {
2304
- context = __assign(__assign({}, event.context), { event: event });
2305
- element = buildElement(options, context);
2306
- event.emit('publish', element);
2261
+ if (!elements.has(options.id)) return [3 /*break*/, 2];
2262
+ element = elements.get(options.id);
2263
+ if (options.updated_at > element.updatedAt) {
2264
+ element.update(options);
2265
+ event.emit('update', element);
2307
2266
  }
2308
- return [2 /*return*/];
2267
+ return [3 /*break*/, 4];
2268
+ case 2:
2269
+ context = __assign(__assign({}, event.context), { event: event });
2270
+ return [4 /*yield*/, buildElement(options, context)];
2271
+ case 3:
2272
+ element = _a.sent();
2273
+ event.emit('publish', element);
2274
+ _a.label = 4;
2275
+ case 4: return [2 /*return*/];
2309
2276
  }
2310
2277
  });
2311
2278
  });
@@ -2358,28 +2325,55 @@ function handleRevealMessage(message) {
2358
2325
  element.context.event.emit('update', element);
2359
2326
  }
2360
2327
  function handleEventHistory(history) {
2328
+ var e_1, _a;
2361
2329
  return __awaiter(this, void 0, void 0, function () {
2362
- var event, context, _i, _a, snapshot;
2363
- return __generator(this, function (_b) {
2364
- switch (_b.label) {
2330
+ var event, context, _b, _c, snapshot, e_1_1;
2331
+ return __generator(this, function (_d) {
2332
+ switch (_d.label) {
2365
2333
  case 0:
2366
2334
  if (history.timeline.length === 0) {
2367
2335
  return [2 /*return*/];
2368
2336
  }
2369
2337
  return [4 /*yield*/, getEvent(history.config.id)];
2370
2338
  case 1:
2371
- event = _b.sent();
2339
+ event = _d.sent();
2372
2340
  if (event === null) {
2373
2341
  return [2 /*return*/];
2374
2342
  }
2375
2343
  context = __assign(__assign({}, event.context), { event: event });
2376
- for (_i = 0, _a = history.timeline; _i < _a.length; _i++) {
2377
- snapshot = _a[_i];
2378
- if (!elements.has(snapshot.id)) {
2379
- buildElement(snapshot, context);
2380
- }
2381
- }
2382
- return [2 /*return*/];
2344
+ _d.label = 2;
2345
+ case 2:
2346
+ _d.trys.push([2, 8, 9, 14]);
2347
+ _b = __asyncValues(history.timeline);
2348
+ _d.label = 3;
2349
+ case 3: return [4 /*yield*/, _b.next()];
2350
+ case 4:
2351
+ if (!(_c = _d.sent(), !_c.done)) return [3 /*break*/, 7];
2352
+ snapshot = _c.value;
2353
+ if (!!elements.has(snapshot.id)) return [3 /*break*/, 6];
2354
+ return [4 /*yield*/, buildElement(snapshot, context)];
2355
+ case 5:
2356
+ _d.sent();
2357
+ _d.label = 6;
2358
+ case 6: return [3 /*break*/, 3];
2359
+ case 7: return [3 /*break*/, 14];
2360
+ case 8:
2361
+ e_1_1 = _d.sent();
2362
+ e_1 = { error: e_1_1 };
2363
+ return [3 /*break*/, 14];
2364
+ case 9:
2365
+ _d.trys.push([9, , 12, 13]);
2366
+ if (!(_c && !_c.done && (_a = _b.return))) return [3 /*break*/, 11];
2367
+ return [4 /*yield*/, _a.call(_b)];
2368
+ case 10:
2369
+ _d.sent();
2370
+ _d.label = 11;
2371
+ case 11: return [3 /*break*/, 13];
2372
+ case 12:
2373
+ if (e_1) throw e_1.error;
2374
+ return [7 /*endfinally*/];
2375
+ case 13: return [7 /*endfinally*/];
2376
+ case 14: return [2 /*return*/];
2383
2377
  }
2384
2378
  });
2385
2379
  });
@@ -2408,27 +2402,41 @@ function sendAnswer(element, userAnswer) {
2408
2402
  });
2409
2403
  }
2410
2404
  function storeAnswer(element, userAnswer) {
2411
- try {
2412
- element.userAnswer = userAnswer;
2413
- if (storageAvailable) {
2414
- // Can throw a "QuotaExceededError" DOMException exception
2415
- // if the quota has been exceeded.
2416
- setItem("element_" + element.id + "_vote", JSON.stringify(userAnswer));
2417
- }
2418
- }
2419
- catch (err) {
2420
- if (err instanceof Error) {
2421
- console.warn("Can't store user answer: " + err.message);
2422
- }
2423
- }
2405
+ return __awaiter(this, void 0, void 0, function () {
2406
+ var err_1;
2407
+ return __generator(this, function (_a) {
2408
+ switch (_a.label) {
2409
+ case 0:
2410
+ _a.trys.push([0, 2, , 3]);
2411
+ element.userAnswer = userAnswer;
2412
+ return [4 /*yield*/, storageWrite("element_" + element.id + "_vote", JSON.stringify(userAnswer))];
2413
+ case 1:
2414
+ _a.sent();
2415
+ return [3 /*break*/, 3];
2416
+ case 2:
2417
+ err_1 = _a.sent();
2418
+ console.warn("Failed to store user answer: " + getErrorMessage(err_1));
2419
+ return [3 /*break*/, 3];
2420
+ case 3: return [2 /*return*/];
2421
+ }
2422
+ });
2423
+ });
2424
2424
  }
2425
2425
  function restoreAnswer(element) {
2426
- if (storageAvailable) {
2427
- var userAnswer = getItem("element_" + element.id + "_vote");
2428
- if (userAnswer !== null) {
2429
- element.userAnswer = Answer.fromJSON(userAnswer);
2430
- }
2431
- }
2426
+ return __awaiter(this, void 0, void 0, function () {
2427
+ var userAnswer;
2428
+ return __generator(this, function (_a) {
2429
+ switch (_a.label) {
2430
+ case 0: return [4 /*yield*/, storageRead("element_" + element.id + "_vote")];
2431
+ case 1:
2432
+ userAnswer = _a.sent();
2433
+ if (userAnswer !== null) {
2434
+ element.userAnswer = Answer.fromJSON(userAnswer);
2435
+ }
2436
+ return [2 /*return*/];
2437
+ }
2438
+ });
2439
+ });
2432
2440
  }
2433
2441
 
2434
2442
  /**
@@ -2618,5 +2626,5 @@ function onElementRevoked(event, callback) {
2618
2626
  return subscribe$2(event, 'revoke', callback);
2619
2627
  }
2620
2628
 
2621
- export { Answer, AnswerError, Channel, ConnectionHealthState, ElementImpl, ElementState, ElementType, EventImpl, EventState, Klass, ProjectImpl, State, answer, fetchListings, getConnect, getConnectionHealth, getElement, getElementMemoized, getElements, getElementsMemoized, getEvent, getEventMemoized, getEvents, getEventsMemoized, getProject, getProjectMemoized, login, onConnectionHealthState, onElementPublished, onElementResults, onElementRevoked, onElementStateChanged, onElementUpdated, onEventAdded, onEventPublished, onEventRemoved, onEventState, onEventUpdated, onProjectFieldsUpdated, onProjectListingsUpdated, validateAnswer };
2629
+ export { Answer, AnswerError, Channel, ConnectionHealthState, ElementImpl, ElementState, ElementType, EventImpl, EventState, Klass, ProjectImpl, State, answer, getConnect, getConnectionHealth, getElement, getElementMemoized, getElements, getElementsMemoized, getEvent, getEventMemoized, getEvents, getEventsMemoized, getProject, getProjectMemoized, login, onConnectionHealthState, onElementPublished, onElementResults, onElementRevoked, onElementStateChanged, onElementUpdated, onEventAdded, onEventPublished, onEventRemoved, onEventState, onEventUpdated, onProjectFieldsUpdated, onProjectListingsUpdated, validateAnswer };
2622
2630
  //# sourceMappingURL=index.esm5.js.map