@robotical/webapp-types 3.12.4 → 3.13.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.
- package/dist-types/src/application/ApplicationManager/ApplicationManager.d.ts +5 -0
- package/dist-types/src/application/ApplicationManager/ApplicationManager.js +24 -0
- package/dist-types/src/application/RAFTs/RAFT.js +29 -15
- package/dist-types/src/store/SelectedRaftContext.js +21 -22
- package/package.json +1 -1
|
@@ -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 (
|
|
330
|
-
switch (
|
|
331
|
-
case
|
|
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
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
case
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
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
|
|
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); };
|