@robotical/webapp-types 3.12.5 → 3.13.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.
@@ -105,6 +105,11 @@ export default class ApplicationManager {
105
105
  * Disconnect from RAFT
106
106
  */
107
107
  disconnectFromRaft(raftId: string): Promise<void>;
108
+ /**
109
+ * Removes raft from the connectedRafts list after a timeout without disconnecting as at this point
110
+ * the device should already be disconnected
111
+ */
112
+ removeRaft(raftId: string): Promise<void>;
108
113
  /**
109
114
  * Removes raft after a certain time
110
115
  * Removes from the rics list after x seconds so that we can still get the last event
@@ -653,6 +653,30 @@ var ApplicationManager = /** @class */ (function () {
653
653
  });
654
654
  });
655
655
  };
656
+ /**
657
+ * Removes raft from the connectedRafts list after a timeout without disconnecting as at this point
658
+ * the device should already be disconnected
659
+ */
660
+ ApplicationManager.prototype.removeRaft = function (raftId) {
661
+ return __awaiter(this, void 0, void 0, function () {
662
+ var raft;
663
+ return __generator(this, function (_a) {
664
+ switch (_a.label) {
665
+ case 0:
666
+ this.connectedRaftContextMethods.removeConnectedRaft(raftId);
667
+ raft = this.connectedRafts[raftId];
668
+ if (!raft) {
669
+ return [2 /*return*/];
670
+ }
671
+ return [4 /*yield*/, raft.disconnect()];
672
+ case 1:
673
+ _a.sent();
674
+ this._removeRaft(raftId, 10);
675
+ return [2 /*return*/];
676
+ }
677
+ });
678
+ });
679
+ };
656
680
  /**
657
681
  * Removes raft after a certain time
658
682
  * Removes from the rics list after x seconds so that we can still get the last event
@@ -325,10 +325,20 @@ var RAFT = /** @class */ (function () {
325
325
  */
326
326
  RAFT.prototype._connectionEventHandler = function (eventEnum, eventName, data) {
327
327
  return __awaiter(this, void 0, void 0, function () {
328
+ var _a;
328
329
  var _this = this;
329
- return __generator(this, function (_a) {
330
- switch (eventEnum) {
331
- case RaftConnEvent.CONN_VERIFIED_CORRECT:
330
+ return __generator(this, function (_b) {
331
+ switch (_b.label) {
332
+ case 0:
333
+ _a = eventEnum;
334
+ switch (_a) {
335
+ case RaftConnEvent.CONN_VERIFIED_CORRECT: return [3 /*break*/, 1];
336
+ case RaftConnEvent.CONN_DISCONNECTED: return [3 /*break*/, 2];
337
+ case RaftConnEvent.CONN_ISSUE_DETECTED: return [3 /*break*/, 4];
338
+ case RaftConnEvent.CONN_ISSUE_RESOLVED: return [3 /*break*/, 5];
339
+ }
340
+ return [3 /*break*/, 6];
341
+ case 1:
332
342
  new Promise(function (resolve) { return __awaiter(_this, void 0, void 0, function () {
333
343
  var robotId, raftType, raftName, raftSerialNumber, deviceInfo, sessionId, deviceId;
334
344
  var _this = this;
@@ -351,7 +361,6 @@ var RAFT = /** @class */ (function () {
351
361
  return [4 /*yield*/, window.wrapperCommunicator.sendMessageAndWait(AppSentMessage.GET_DEVICE_INFO, {})];
352
362
  case 1:
353
363
  deviceInfo = _a.sent();
354
- console.log("deviceInfo", deviceInfo);
355
364
  sessionId = randomHashGenerator();
356
365
  deviceId = deviceInfo.deviceId;
357
366
  window.applicationManager.AnalyticsFacade.startSession(sessionId, deviceId, robotId, raftType);
@@ -362,18 +371,23 @@ var RAFT = /** @class */ (function () {
362
371
  }
363
372
  });
364
373
  }); });
365
- break;
366
- case RaftConnEvent.CONN_DISCONNECTED: // this runs when the RAFT is disconnected on its own (due to a timeout or other reasons)
367
- window.applicationManager.disconnectGeneric(this, function () { }, true); // disconnects the RAFT and removes it from the connectedRafts list
368
- break;
369
- case RaftConnEvent.CONN_ISSUE_DETECTED:
370
- break;
371
- case RaftConnEvent.CONN_ISSUE_RESOLVED:
372
- break;
373
- default:
374
- break;
374
+ return [3 /*break*/, 7];
375
+ case 2:
376
+ // this runs when the RAFT is disconnected either on its own (due to a timeout or other reasons), or by the user
377
+ // if it's by the user, we don't really need to do anything as the applicationManager will handle the disconnection
378
+ // if the RAFT is disconnected on its own, however, we need to remove it from the connectedRafts list
379
+ return [4 /*yield*/, window.applicationManager.removeRaft(this.id)];
380
+ case 3:
381
+ // this runs when the RAFT is disconnected either on its own (due to a timeout or other reasons), or by the user
382
+ // if it's by the user, we don't really need to do anything as the applicationManager will handle the disconnection
383
+ // if the RAFT is disconnected on its own, however, we need to remove it from the connectedRafts list
384
+ _b.sent();
385
+ return [3 /*break*/, 7];
386
+ case 4: return [3 /*break*/, 7];
387
+ case 5: return [3 /*break*/, 7];
388
+ case 6: return [3 /*break*/, 7];
389
+ case 7: return [2 /*return*/];
375
390
  }
376
- return [2 /*return*/];
377
391
  });
378
392
  });
379
393
  };
@@ -38,24 +38,6 @@ export var ConnectedRaftContentProvider = function (_a) {
38
38
  var children = _a.children;
39
39
  var _b = useState([{ id: NewRobotIdE.NEW, isSelected: true, name: "Connect to new robot", type: RaftTypeE.undefined }]), connectedRafts = _b[0], setConnectedRafts = _b[1];
40
40
  var _c = useState(0), nameUpdatedState = _c[0], setNameUpdatedState = _c[1];
41
- useEffect(function () {
42
- if (window.applicationManager) {
43
- window.applicationManager.connectedRaftContextMethods = {
44
- addConnectedRaft: function (connectedRaft) {
45
- addConnectedRaft(connectedRaft);
46
- },
47
- removeConnectedRaft: function (connectedRaftId) {
48
- removeConnectedRaft(connectedRaftId);
49
- },
50
- setSelectedRaft: function (connectedRaftId) {
51
- setSelectedRaft(connectedRaftId);
52
- },
53
- nameUpdated: function () {
54
- nameUpdated();
55
- },
56
- };
57
- }
58
- }, []);
59
41
  useEffect(function () {
60
42
  window.applicationManager.connectedRaftsContext = connectedRafts;
61
43
  }, [connectedRafts]);
@@ -76,18 +58,35 @@ export var ConnectedRaftContentProvider = function (_a) {
76
58
  setConnectedRafts(function (prev) { return __spreadArray(__spreadArray([], prev, true), [connectedRaft], false); });
77
59
  };
78
60
  var removeConnectedRaft = function (connectedRaftId) {
79
- // if the removed raft is selected, select the first raft in the list
61
+ // if the removed raft is selected, filter it out and then select the first raft in the list
80
62
  var selectedRaft = connectedRafts.find(function (connectedRaft) { return connectedRaft.isSelected; });
81
63
  if ((selectedRaft === null || selectedRaft === void 0 ? void 0 : selectedRaft.id) === connectedRaftId) {
82
- setConnectedRafts(function (prev) { return prev.map(function (connectedRaft, index) { return (__assign(__assign({}, connectedRaft), { isSelected: index === 0 })); }); });
64
+ setConnectedRafts(function (prev) { return prev
65
+ .filter(function (connectedRaft) { return connectedRaft.id !== connectedRaftId; })
66
+ .map(function (connectedRaft, index) { return (__assign(__assign({}, connectedRaft), { isSelected: index === 1 })); }); });
67
+ }
68
+ else {
69
+ // otherwise just filter out the raft
70
+ setConnectedRafts(function (prev) { return prev.filter(function (connectedRaft) { return connectedRaft.id !== connectedRaftId; }); });
83
71
  }
84
- setConnectedRafts(function (prev) { return prev.filter(function (connectedRaft) { return connectedRaft.id !== connectedRaftId; }); });
85
72
  };
86
73
  var setSelectedRaft = function (connectedRaftId) {
87
74
  // deselect the previously selected raft
88
- setConnectedRafts(function (prev) { return prev.map(function (connectedRaft) { return (__assign(__assign({}, connectedRaft), { isSelected: false })); }); });
89
75
  setConnectedRafts(function (prev) { return prev.map(function (connectedRaft) { return (__assign(__assign({}, connectedRaft), { isSelected: connectedRaft.id === connectedRaftId })); }); });
90
76
  };
77
+ useEffect(function () {
78
+ var handle;
79
+ function tryAttach() {
80
+ if (window.applicationManager) {
81
+ window.applicationManager.connectedRaftContextMethods = { addConnectedRaft: addConnectedRaft, removeConnectedRaft: removeConnectedRaft, setSelectedRaft: setSelectedRaft, nameUpdated: nameUpdated };
82
+ }
83
+ else {
84
+ handle = window.setTimeout(tryAttach, 100);
85
+ }
86
+ }
87
+ tryAttach();
88
+ return function () { handle && clearTimeout(handle); };
89
+ }, [addConnectedRaft, removeConnectedRaft, setSelectedRaft, nameUpdated]);
91
90
  return (_jsx(ConnectedRaftContext.Provider, __assign({ value: { connectedRafts: connectedRafts, addConnectedRaft: addConnectedRaft, removeConnectedRaft: removeConnectedRaft, setSelectedRaft: setSelectedRaft, nameUpdated: nameUpdated, nameUpdatedState: nameUpdatedState } }, { children: children })));
92
91
  };
93
92
  export var useConnectedRafts = function () { return useContext(ConnectedRaftContext); };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@robotical/webapp-types",
3
- "version": "3.12.5",
3
+ "version": "3.13.1",
4
4
  "description": "Type definitions for the Application Manager",
5
5
  "main": "dist/application-manager.d.ts",
6
6
  "types": "dist/application-manager.d.ts",