@ledgerhq/live-common 24.0.0 → 24.1.0-next.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/lib/__tests__/range.js +8 -0
- package/lib/__tests__/range.js.map +1 -1
- package/lib/families/bitcoin/js-synchronisation.d.ts.map +1 -1
- package/lib/families/bitcoin/js-synchronisation.js +2 -173
- package/lib/families/bitcoin/js-synchronisation.js.map +1 -1
- package/lib/families/bitcoin/logic.d.ts +6 -1
- package/lib/families/bitcoin/logic.d.ts.map +1 -1
- package/lib/families/bitcoin/logic.js +186 -1
- package/lib/families/bitcoin/logic.js.map +1 -1
- package/lib/families/bitcoin/xpub.txs.txNoOutput.unit.test.d.ts +2 -0
- package/lib/families/bitcoin/xpub.txs.txNoOutput.unit.test.d.ts.map +1 -0
- package/lib/families/bitcoin/xpub.txs.txNoOutput.unit.test.js +72 -0
- package/lib/families/bitcoin/xpub.txs.txNoOutput.unit.test.js.map +1 -0
- package/lib/families/cosmos/api/Cosmos.d.ts.map +1 -1
- package/lib/families/cosmos/api/Cosmos.js +1 -0
- package/lib/families/cosmos/api/Cosmos.js.map +1 -1
- package/lib/families/cosmos/react.test.js +5 -4
- package/lib/families/cosmos/react.test.js.map +1 -1
- package/lib/hw/extractOnboardingState.d.ts +26 -0
- package/lib/hw/extractOnboardingState.d.ts.map +1 -0
- package/lib/hw/extractOnboardingState.js +69 -0
- package/lib/hw/extractOnboardingState.js.map +1 -0
- package/lib/hw/extractOnboardingState.test.d.ts +2 -0
- package/lib/hw/extractOnboardingState.test.d.ts.map +1 -0
- package/lib/hw/extractOnboardingState.test.js +182 -0
- package/lib/hw/extractOnboardingState.test.js.map +1 -0
- package/lib/hw/getOnboardingStatePolling.d.ts +20 -0
- package/lib/hw/getOnboardingStatePolling.d.ts.map +1 -0
- package/lib/hw/getOnboardingStatePolling.js +117 -0
- package/lib/hw/getOnboardingStatePolling.js.map +1 -0
- package/lib/hw/getOnboardingStatePolling.test.d.ts +2 -0
- package/lib/hw/getOnboardingStatePolling.test.d.ts.map +1 -0
- package/lib/hw/getOnboardingStatePolling.test.js +224 -0
- package/lib/hw/getOnboardingStatePolling.test.js.map +1 -0
- package/lib/onboarding/hooks/useOnboardingStatePolling.d.ts +22 -0
- package/lib/onboarding/hooks/useOnboardingStatePolling.d.ts.map +1 -0
- package/lib/onboarding/hooks/useOnboardingStatePolling.js +81 -0
- package/lib/onboarding/hooks/useOnboardingStatePolling.js.map +1 -0
- package/lib/onboarding/hooks/useOnboardingStatePolling.test.d.ts +2 -0
- package/lib/onboarding/hooks/useOnboardingStatePolling.test.d.ts.map +1 -0
- package/lib/onboarding/hooks/useOnboardingStatePolling.test.js +374 -0
- package/lib/onboarding/hooks/useOnboardingStatePolling.test.js.map +1 -0
- package/lib/types/manager.d.ts +5 -0
- package/lib/types/manager.d.ts.map +1 -1
- package/lib/types/manager.js +7 -1
- package/lib/types/manager.js.map +1 -1
- package/package.json +2 -2
- package/src/__tests__/range.ts +13 -0
- package/src/families/bitcoin/js-synchronisation.ts +3 -172
- package/src/families/bitcoin/logic.ts +169 -0
- package/src/families/bitcoin/xpub.txs.txNoOutput.unit.test.ts +37 -0
- package/src/families/cosmos/api/Cosmos.ts +4 -0
- package/src/families/cosmos/react.test.ts +3 -0
- package/src/hw/extractOnboardingState.test.ts +251 -0
- package/src/hw/extractOnboardingState.ts +97 -0
- package/src/hw/getOnboardingStatePolling.test.ts +247 -0
- package/src/hw/getOnboardingStatePolling.ts +153 -0
- package/src/onboarding/hooks/useOnboardingStatePolling.test.ts +304 -0
- package/src/onboarding/hooks/useOnboardingStatePolling.ts +86 -0
- package/src/types/manager.ts +5 -0
|
@@ -0,0 +1,224 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
|
+
};
|
|
28
|
+
exports.__esModule = true;
|
|
29
|
+
var getOnboardingStatePolling_1 = require("./getOnboardingStatePolling");
|
|
30
|
+
var rxjs_1 = require("rxjs");
|
|
31
|
+
var rxjsOperators = __importStar(require("rxjs/operators"));
|
|
32
|
+
var devices_1 = require("@ledgerhq/devices");
|
|
33
|
+
var hw_transport_1 = __importDefault(require("@ledgerhq/hw-transport"));
|
|
34
|
+
var errors_1 = require("@ledgerhq/errors");
|
|
35
|
+
var deviceAccess_1 = require("./deviceAccess");
|
|
36
|
+
var getVersion_1 = __importDefault(require("./getVersion"));
|
|
37
|
+
var extractOnboardingState_1 = require("./extractOnboardingState");
|
|
38
|
+
var manager_1 = require("../types/manager");
|
|
39
|
+
jest.mock("./deviceAccess");
|
|
40
|
+
jest.mock("./getVersion");
|
|
41
|
+
jest.mock("./extractOnboardingState");
|
|
42
|
+
jest.mock("@ledgerhq/hw-transport");
|
|
43
|
+
jest.useFakeTimers();
|
|
44
|
+
var aDevice = {
|
|
45
|
+
deviceId: "DEVICE_ID_A",
|
|
46
|
+
deviceName: "DEVICE_NAME_A",
|
|
47
|
+
modelId: devices_1.DeviceModelId.nanoFTS,
|
|
48
|
+
wired: false
|
|
49
|
+
};
|
|
50
|
+
// As extractOnboardingState is mocked, the firmwareInfo
|
|
51
|
+
// returned by getVersion does not matter
|
|
52
|
+
var aFirmwareInfo = {
|
|
53
|
+
isBootloader: false,
|
|
54
|
+
rawVersion: "",
|
|
55
|
+
targetId: 0,
|
|
56
|
+
mcuVersion: "",
|
|
57
|
+
flags: Buffer.from([])
|
|
58
|
+
};
|
|
59
|
+
var pollingPeriodMs = 1000;
|
|
60
|
+
var mockedGetVersion = jest.mocked(getVersion_1["default"]);
|
|
61
|
+
var mockedWithDevice = jest.mocked(deviceAccess_1.withDevice);
|
|
62
|
+
mockedWithDevice.mockReturnValue(function (job) { return (0, rxjs_1.from)(job(new hw_transport_1["default"]())); });
|
|
63
|
+
var mockedExtractOnboardingState = jest.mocked(extractOnboardingState_1.extractOnboardingState);
|
|
64
|
+
describe("getOnboardingStatePolling", function () {
|
|
65
|
+
var anOnboardingState;
|
|
66
|
+
var onboardingStatePollingSubscription;
|
|
67
|
+
beforeEach(function () {
|
|
68
|
+
anOnboardingState = {
|
|
69
|
+
isOnboarded: false,
|
|
70
|
+
isInRecoveryMode: false,
|
|
71
|
+
seedPhraseType: manager_1.SeedPhraseType.TwentyFour,
|
|
72
|
+
currentSeedWordIndex: 0,
|
|
73
|
+
currentOnboardingStep: extractOnboardingState_1.OnboardingStep.NewDevice
|
|
74
|
+
};
|
|
75
|
+
});
|
|
76
|
+
afterEach(function () {
|
|
77
|
+
mockedGetVersion.mockClear();
|
|
78
|
+
mockedExtractOnboardingState.mockClear();
|
|
79
|
+
jest.clearAllTimers();
|
|
80
|
+
onboardingStatePollingSubscription === null || onboardingStatePollingSubscription === void 0 ? void 0 : onboardingStatePollingSubscription.unsubscribe();
|
|
81
|
+
});
|
|
82
|
+
describe("When a communication error occurs while fetching the device state", function () {
|
|
83
|
+
describe("and when the error is allowed and thrown before the defined timeout", function () {
|
|
84
|
+
it("should update the onboarding state to null and keep track of the allowed error", function (done) {
|
|
85
|
+
mockedGetVersion.mockRejectedValue(new errors_1.DisconnectedDevice("An allowed error"));
|
|
86
|
+
mockedExtractOnboardingState.mockReturnValue(anOnboardingState);
|
|
87
|
+
var device = aDevice;
|
|
88
|
+
(0, getOnboardingStatePolling_1.getOnboardingStatePolling)({
|
|
89
|
+
deviceId: device.deviceId,
|
|
90
|
+
pollingPeriodMs: pollingPeriodMs
|
|
91
|
+
}).subscribe({
|
|
92
|
+
next: function (value) {
|
|
93
|
+
expect(value.onboardingState).toBeNull();
|
|
94
|
+
expect(value.allowedError).toBeInstanceOf(errors_1.DisconnectedDevice);
|
|
95
|
+
done();
|
|
96
|
+
}
|
|
97
|
+
});
|
|
98
|
+
// The timeout is equal to pollingPeriodMs by default
|
|
99
|
+
jest.advanceTimersByTime(pollingPeriodMs - 1);
|
|
100
|
+
});
|
|
101
|
+
});
|
|
102
|
+
describe("and when a timeout occurred before the error (or the fetch took too long)", function () {
|
|
103
|
+
it("should update the allowed error value to notify the consumer - default value for the timeout", function (done) {
|
|
104
|
+
mockedGetVersion.mockResolvedValue(aFirmwareInfo);
|
|
105
|
+
mockedExtractOnboardingState.mockReturnValue(anOnboardingState);
|
|
106
|
+
var device = aDevice;
|
|
107
|
+
(0, getOnboardingStatePolling_1.getOnboardingStatePolling)({
|
|
108
|
+
deviceId: device.deviceId,
|
|
109
|
+
pollingPeriodMs: pollingPeriodMs
|
|
110
|
+
}).subscribe({
|
|
111
|
+
next: function (value) {
|
|
112
|
+
expect(value.onboardingState).toBeNull();
|
|
113
|
+
expect(value.allowedError).toBeInstanceOf(rxjs_1.TimeoutError);
|
|
114
|
+
done();
|
|
115
|
+
}
|
|
116
|
+
});
|
|
117
|
+
// Waits more than the timeout
|
|
118
|
+
jest.advanceTimersByTime(pollingPeriodMs + 1);
|
|
119
|
+
});
|
|
120
|
+
it("should update the allowed error value to notify the consumer - timeout value set by the consumer", function (done) {
|
|
121
|
+
var fetchingTimeoutMs = pollingPeriodMs + 500;
|
|
122
|
+
mockedGetVersion.mockResolvedValue(aFirmwareInfo);
|
|
123
|
+
mockedExtractOnboardingState.mockReturnValue(anOnboardingState);
|
|
124
|
+
var device = aDevice;
|
|
125
|
+
(0, getOnboardingStatePolling_1.getOnboardingStatePolling)({
|
|
126
|
+
deviceId: device.deviceId,
|
|
127
|
+
pollingPeriodMs: pollingPeriodMs,
|
|
128
|
+
fetchingTimeoutMs: fetchingTimeoutMs
|
|
129
|
+
}).subscribe({
|
|
130
|
+
next: function (value) {
|
|
131
|
+
expect(value.onboardingState).toBeNull();
|
|
132
|
+
expect(value.allowedError).toBeInstanceOf(rxjs_1.TimeoutError);
|
|
133
|
+
done();
|
|
134
|
+
}
|
|
135
|
+
});
|
|
136
|
+
// Waits more than the timeout
|
|
137
|
+
jest.advanceTimersByTime(fetchingTimeoutMs + 1);
|
|
138
|
+
});
|
|
139
|
+
});
|
|
140
|
+
describe("and when the error is fatal and thrown before the defined timeout", function () {
|
|
141
|
+
it("should notify the consumer that a unallowed error occurred", function (done) {
|
|
142
|
+
mockedGetVersion.mockRejectedValue(new Error("Unknown error"));
|
|
143
|
+
var device = aDevice;
|
|
144
|
+
(0, getOnboardingStatePolling_1.getOnboardingStatePolling)({
|
|
145
|
+
deviceId: device.deviceId,
|
|
146
|
+
pollingPeriodMs: pollingPeriodMs
|
|
147
|
+
}).subscribe({
|
|
148
|
+
error: function (error) {
|
|
149
|
+
expect(error).toBeInstanceOf(Error);
|
|
150
|
+
expect(error === null || error === void 0 ? void 0 : error.message).toBe("Unknown error");
|
|
151
|
+
done();
|
|
152
|
+
}
|
|
153
|
+
});
|
|
154
|
+
jest.advanceTimersByTime(pollingPeriodMs - 1);
|
|
155
|
+
});
|
|
156
|
+
});
|
|
157
|
+
});
|
|
158
|
+
describe("When the fetched device state is incorrect", function () {
|
|
159
|
+
it("should return a null onboarding state, and keep track of the extract error", function (done) {
|
|
160
|
+
mockedGetVersion.mockResolvedValue(aFirmwareInfo);
|
|
161
|
+
mockedExtractOnboardingState.mockImplementation(function () {
|
|
162
|
+
throw new errors_1.DeviceExtractOnboardingStateError("Some incorrect device info");
|
|
163
|
+
});
|
|
164
|
+
var device = aDevice;
|
|
165
|
+
onboardingStatePollingSubscription = (0, getOnboardingStatePolling_1.getOnboardingStatePolling)({
|
|
166
|
+
deviceId: device.deviceId,
|
|
167
|
+
pollingPeriodMs: pollingPeriodMs
|
|
168
|
+
}).subscribe({
|
|
169
|
+
next: function (value) {
|
|
170
|
+
expect(value.onboardingState).toBeNull();
|
|
171
|
+
expect(value.allowedError).toBeInstanceOf(errors_1.DeviceExtractOnboardingStateError);
|
|
172
|
+
done();
|
|
173
|
+
}
|
|
174
|
+
});
|
|
175
|
+
jest.advanceTimersByTime(pollingPeriodMs - 1);
|
|
176
|
+
});
|
|
177
|
+
});
|
|
178
|
+
describe("When polling returns a correct device state", function () {
|
|
179
|
+
it("should return a correct onboarding state", function (done) {
|
|
180
|
+
mockedGetVersion.mockResolvedValue(aFirmwareInfo);
|
|
181
|
+
mockedExtractOnboardingState.mockReturnValue(anOnboardingState);
|
|
182
|
+
var device = aDevice;
|
|
183
|
+
onboardingStatePollingSubscription = (0, getOnboardingStatePolling_1.getOnboardingStatePolling)({
|
|
184
|
+
deviceId: device.deviceId,
|
|
185
|
+
pollingPeriodMs: pollingPeriodMs
|
|
186
|
+
}).subscribe({
|
|
187
|
+
next: function (value) {
|
|
188
|
+
expect(value.allowedError).toBeNull();
|
|
189
|
+
expect(value.onboardingState).toEqual(anOnboardingState);
|
|
190
|
+
done();
|
|
191
|
+
},
|
|
192
|
+
error: function (error) {
|
|
193
|
+
done(error);
|
|
194
|
+
}
|
|
195
|
+
});
|
|
196
|
+
jest.advanceTimersByTime(pollingPeriodMs - 1);
|
|
197
|
+
});
|
|
198
|
+
it("should poll a new onboarding state after the defined period of time", function (done) {
|
|
199
|
+
mockedGetVersion.mockResolvedValue(aFirmwareInfo);
|
|
200
|
+
mockedExtractOnboardingState.mockReturnValue(anOnboardingState);
|
|
201
|
+
var device = aDevice;
|
|
202
|
+
// Did not manage to test that the polling is repeated by using jest's fake timer
|
|
203
|
+
// and advanceTimersByTime method or equivalent.
|
|
204
|
+
// Hacky test: spy on the repeat operator to see if it has been called.
|
|
205
|
+
var spiedRepeat = jest.spyOn(rxjsOperators, "repeat");
|
|
206
|
+
onboardingStatePollingSubscription = (0, getOnboardingStatePolling_1.getOnboardingStatePolling)({
|
|
207
|
+
deviceId: device.deviceId,
|
|
208
|
+
pollingPeriodMs: pollingPeriodMs
|
|
209
|
+
}).subscribe({
|
|
210
|
+
next: function (value) {
|
|
211
|
+
expect(value.onboardingState).toEqual(anOnboardingState);
|
|
212
|
+
expect(value.allowedError).toBeNull();
|
|
213
|
+
expect(spiedRepeat).toHaveBeenCalledTimes(1);
|
|
214
|
+
done();
|
|
215
|
+
},
|
|
216
|
+
error: function (error) {
|
|
217
|
+
done(error);
|
|
218
|
+
}
|
|
219
|
+
});
|
|
220
|
+
jest.runOnlyPendingTimers();
|
|
221
|
+
});
|
|
222
|
+
});
|
|
223
|
+
});
|
|
224
|
+
//# sourceMappingURL=getOnboardingStatePolling.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getOnboardingStatePolling.test.js","sourceRoot":"","sources":["../../src/hw/getOnboardingStatePolling.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { Device } from "../../hw/actions/types";
|
|
2
|
+
import type { OnboardingStatePollingResult } from "../../hw/getOnboardingStatePolling";
|
|
3
|
+
export declare type UseOnboardingStatePollingResult = OnboardingStatePollingResult & {
|
|
4
|
+
fatalError: Error | null;
|
|
5
|
+
};
|
|
6
|
+
/**
|
|
7
|
+
* Polls the current device onboarding state, and notify the hook consumer of
|
|
8
|
+
* any allowed errors and fatal errors
|
|
9
|
+
* @param device A Device object
|
|
10
|
+
* @param pollingPeriodMs The period in ms after which the device onboarding state is fetched again
|
|
11
|
+
* @param stopPolling Flag to stop or continue the polling
|
|
12
|
+
* @returns An object containing:
|
|
13
|
+
* - onboardingState: the device state during the onboarding
|
|
14
|
+
* - allowedError: any error that is allowed and does not stop the polling
|
|
15
|
+
* - fatalError: any error that is fatal and stops the polling
|
|
16
|
+
*/
|
|
17
|
+
export declare const useOnboardingStatePolling: ({ device, pollingPeriodMs, stopPolling, }: {
|
|
18
|
+
device: Device | null;
|
|
19
|
+
pollingPeriodMs: number;
|
|
20
|
+
stopPolling?: boolean | undefined;
|
|
21
|
+
}) => UseOnboardingStatePollingResult;
|
|
22
|
+
//# sourceMappingURL=useOnboardingStatePolling.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useOnboardingStatePolling.d.ts","sourceRoot":"","sources":["../../../src/onboarding/hooks/useOnboardingStatePolling.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAGrD,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,oCAAoC,CAAC;AAIvF,oBAAY,+BAA+B,GAAG,4BAA4B,GAAG;IAC3E,UAAU,EAAE,KAAK,GAAG,IAAI,CAAC;CAC1B,CAAC;AAEF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,yBAAyB;YAK5B,MAAM,GAAG,IAAI;qBACJ,MAAM;;MAErB,+BAqDH,CAAC"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __read = (this && this.__read) || function (o, n) {
|
|
3
|
+
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
4
|
+
if (!m) return o;
|
|
5
|
+
var i = m.call(o), r, ar = [], e;
|
|
6
|
+
try {
|
|
7
|
+
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
|
8
|
+
}
|
|
9
|
+
catch (error) { e = { error: error }; }
|
|
10
|
+
finally {
|
|
11
|
+
try {
|
|
12
|
+
if (r && !r.done && (m = i["return"])) m.call(i);
|
|
13
|
+
}
|
|
14
|
+
finally { if (e) throw e.error; }
|
|
15
|
+
}
|
|
16
|
+
return ar;
|
|
17
|
+
};
|
|
18
|
+
exports.__esModule = true;
|
|
19
|
+
exports.useOnboardingStatePolling = void 0;
|
|
20
|
+
var react_1 = require("react");
|
|
21
|
+
var errors_1 = require("@ledgerhq/errors");
|
|
22
|
+
var getOnboardingStatePolling_1 = require("../../hw/getOnboardingStatePolling");
|
|
23
|
+
/**
|
|
24
|
+
* Polls the current device onboarding state, and notify the hook consumer of
|
|
25
|
+
* any allowed errors and fatal errors
|
|
26
|
+
* @param device A Device object
|
|
27
|
+
* @param pollingPeriodMs The period in ms after which the device onboarding state is fetched again
|
|
28
|
+
* @param stopPolling Flag to stop or continue the polling
|
|
29
|
+
* @returns An object containing:
|
|
30
|
+
* - onboardingState: the device state during the onboarding
|
|
31
|
+
* - allowedError: any error that is allowed and does not stop the polling
|
|
32
|
+
* - fatalError: any error that is fatal and stops the polling
|
|
33
|
+
*/
|
|
34
|
+
var useOnboardingStatePolling = function (_a) {
|
|
35
|
+
var device = _a.device, pollingPeriodMs = _a.pollingPeriodMs, _b = _a.stopPolling, stopPolling = _b === void 0 ? false : _b;
|
|
36
|
+
var _c = __read((0, react_1.useState)(null), 2), onboardingState = _c[0], setOnboardingState = _c[1];
|
|
37
|
+
var _d = __read((0, react_1.useState)(null), 2), allowedError = _d[0], setAllowedError = _d[1];
|
|
38
|
+
var _e = __read((0, react_1.useState)(null), 2), fatalError = _e[0], setFatalError = _e[1];
|
|
39
|
+
(0, react_1.useEffect)(function () {
|
|
40
|
+
var onboardingStatePollingSubscription;
|
|
41
|
+
// If stopPolling is updated and set to true, the useEffect hook will call its
|
|
42
|
+
// cleanup function (return) and the polling won't restart with the below condition
|
|
43
|
+
if (device && !stopPolling) {
|
|
44
|
+
onboardingStatePollingSubscription = (0, getOnboardingStatePolling_1.getOnboardingStatePolling)({
|
|
45
|
+
deviceId: device.deviceId,
|
|
46
|
+
pollingPeriodMs: pollingPeriodMs
|
|
47
|
+
}).subscribe({
|
|
48
|
+
next: function (onboardingStatePollingResult) {
|
|
49
|
+
if (onboardingStatePollingResult) {
|
|
50
|
+
setFatalError(null);
|
|
51
|
+
setAllowedError(onboardingStatePollingResult.allowedError);
|
|
52
|
+
// Does not update the onboarding state if an allowed error occurred
|
|
53
|
+
if (!onboardingStatePollingResult.allowedError) {
|
|
54
|
+
setOnboardingState(onboardingStatePollingResult.onboardingState);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
},
|
|
58
|
+
error: function (error) {
|
|
59
|
+
var _a;
|
|
60
|
+
setAllowedError(null);
|
|
61
|
+
setFatalError(error instanceof Error
|
|
62
|
+
? error
|
|
63
|
+
: new errors_1.DeviceOnboardingStatePollingError("Error from: ".concat((_a = error === null || error === void 0 ? void 0 : error.name) !== null && _a !== void 0 ? _a : error, " ").concat(error === null || error === void 0 ? void 0 : error.message)));
|
|
64
|
+
}
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
return function () {
|
|
68
|
+
onboardingStatePollingSubscription === null || onboardingStatePollingSubscription === void 0 ? void 0 : onboardingStatePollingSubscription.unsubscribe();
|
|
69
|
+
};
|
|
70
|
+
}, [
|
|
71
|
+
device,
|
|
72
|
+
pollingPeriodMs,
|
|
73
|
+
setOnboardingState,
|
|
74
|
+
setAllowedError,
|
|
75
|
+
setFatalError,
|
|
76
|
+
stopPolling,
|
|
77
|
+
]);
|
|
78
|
+
return { onboardingState: onboardingState, allowedError: allowedError, fatalError: fatalError };
|
|
79
|
+
};
|
|
80
|
+
exports.useOnboardingStatePolling = useOnboardingStatePolling;
|
|
81
|
+
//# sourceMappingURL=useOnboardingStatePolling.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useOnboardingStatePolling.js","sourceRoot":"","sources":["../../../src/onboarding/hooks/useOnboardingStatePolling.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;AAAA,+BAA4C;AAG5C,2CAAqE;AAGrE,gFAA+E;AAO/E;;;;;;;;;;GAUG;AACI,IAAM,yBAAyB,GAAG,UAAC,EAQzC;QAPC,MAAM,YAAA,EACN,eAAe,qBAAA,EACf,mBAAmB,EAAnB,WAAW,mBAAG,KAAK,KAAA;IAMb,IAAA,KAAA,OACJ,IAAA,gBAAQ,EAAyB,IAAI,CAAC,IAAA,EADjC,eAAe,QAAA,EAAE,kBAAkB,QACF,CAAC;IACnC,IAAA,KAAA,OAAkC,IAAA,gBAAQ,EAAe,IAAI,CAAC,IAAA,EAA7D,YAAY,QAAA,EAAE,eAAe,QAAgC,CAAC;IAC/D,IAAA,KAAA,OAA8B,IAAA,gBAAQ,EAAe,IAAI,CAAC,IAAA,EAAzD,UAAU,QAAA,EAAE,aAAa,QAAgC,CAAC;IAEjE,IAAA,iBAAS,EAAC;QACR,IAAI,kCAAgD,CAAC;QAErD,8EAA8E;QAC9E,mFAAmF;QACnF,IAAI,MAAM,IAAI,CAAC,WAAW,EAAE;YAC1B,kCAAkC,GAAG,IAAA,qDAAyB,EAAC;gBAC7D,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,eAAe,iBAAA;aAChB,CAAC,CAAC,SAAS,CAAC;gBACX,IAAI,EAAE,UAAC,4BAA0D;oBAC/D,IAAI,4BAA4B,EAAE;wBAChC,aAAa,CAAC,IAAI,CAAC,CAAC;wBACpB,eAAe,CAAC,4BAA4B,CAAC,YAAY,CAAC,CAAC;wBAE3D,oEAAoE;wBACpE,IAAI,CAAC,4BAA4B,CAAC,YAAY,EAAE;4BAC9C,kBAAkB,CAAC,4BAA4B,CAAC,eAAe,CAAC,CAAC;yBAClE;qBACF;gBACH,CAAC;gBACD,KAAK,EAAE,UAAC,KAAK;;oBACX,eAAe,CAAC,IAAI,CAAC,CAAC;oBACtB,aAAa,CACX,KAAK,YAAY,KAAK;wBACpB,CAAC,CAAC,KAAK;wBACP,CAAC,CAAC,IAAI,0CAAiC,CACnC,sBAAe,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,IAAI,mCAAI,KAAK,cAAI,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,OAAO,CAAE,CACxD,CACN,CAAC;gBACJ,CAAC;aACF,CAAC,CAAC;SACJ;QAED,OAAO;YACL,kCAAkC,aAAlC,kCAAkC,uBAAlC,kCAAkC,CAAE,WAAW,EAAE,CAAC;QACpD,CAAC,CAAC;IACJ,CAAC,EAAE;QACD,MAAM;QACN,eAAe;QACf,kBAAkB;QAClB,eAAe;QACf,aAAa;QACb,WAAW;KACZ,CAAC,CAAC;IAEH,OAAO,EAAE,eAAe,iBAAA,EAAE,YAAY,cAAA,EAAE,UAAU,YAAA,EAAE,CAAC;AACvD,CAAC,CAAC;AA7DW,QAAA,yBAAyB,6BA6DpC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useOnboardingStatePolling.test.d.ts","sourceRoot":"","sources":["../../../src/onboarding/hooks/useOnboardingStatePolling.test.ts"],"names":[],"mappings":""}
|