@ledgerhq/live-common 34.52.0 → 34.52.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.
- package/lib/deviceSDK/actions/getBatteryStatuses.d.ts +2 -1
- package/lib/deviceSDK/actions/getBatteryStatuses.d.ts.map +1 -1
- package/lib/deviceSDK/actions/getBatteryStatuses.js +2 -2
- package/lib/deviceSDK/actions/getBatteryStatuses.js.map +1 -1
- package/lib/deviceSDK/actions/getDeviceInfo.d.ts +2 -1
- package/lib/deviceSDK/actions/getDeviceInfo.d.ts.map +1 -1
- package/lib/deviceSDK/actions/getDeviceInfo.js +2 -2
- package/lib/deviceSDK/actions/getDeviceInfo.js.map +1 -1
- package/lib/deviceSDK/actions/getLatestAvailableFirmware.d.ts +2 -1
- package/lib/deviceSDK/actions/getLatestAvailableFirmware.d.ts.map +1 -1
- package/lib/deviceSDK/actions/getLatestAvailableFirmware.js +6 -3
- package/lib/deviceSDK/actions/getLatestAvailableFirmware.js.map +1 -1
- package/lib/deviceSDK/actions/toggleOnboardingEarlyCheck.d.ts +2 -1
- package/lib/deviceSDK/actions/toggleOnboardingEarlyCheck.d.ts.map +1 -1
- package/lib/deviceSDK/actions/toggleOnboardingEarlyCheck.js +2 -2
- package/lib/deviceSDK/actions/toggleOnboardingEarlyCheck.js.map +1 -1
- package/lib/deviceSDK/actions/updateFirmware.d.ts +2 -1
- package/lib/deviceSDK/actions/updateFirmware.d.ts.map +1 -1
- package/lib/deviceSDK/actions/updateFirmware.js +4 -3
- package/lib/deviceSDK/actions/updateFirmware.js.map +1 -1
- package/lib/deviceSDK/hooks/useBatteryStatuses.d.ts +2 -1
- package/lib/deviceSDK/hooks/useBatteryStatuses.d.ts.map +1 -1
- package/lib/deviceSDK/hooks/useBatteryStatuses.js +3 -2
- package/lib/deviceSDK/hooks/useBatteryStatuses.js.map +1 -1
- package/lib/deviceSDK/hooks/useGetDeviceInfo.d.ts +2 -1
- package/lib/deviceSDK/hooks/useGetDeviceInfo.d.ts.map +1 -1
- package/lib/deviceSDK/hooks/useGetDeviceInfo.js +3 -3
- package/lib/deviceSDK/hooks/useGetDeviceInfo.js.map +1 -1
- package/lib/deviceSDK/hooks/useGetLatestAvailableFirmware.d.ts +2 -1
- package/lib/deviceSDK/hooks/useGetLatestAvailableFirmware.d.ts.map +1 -1
- package/lib/deviceSDK/hooks/useGetLatestAvailableFirmware.js +2 -1
- package/lib/deviceSDK/hooks/useGetLatestAvailableFirmware.js.map +1 -1
- package/lib/deviceSDK/hooks/useToggleOnboardingEarlyChecks.d.ts +2 -1
- package/lib/deviceSDK/hooks/useToggleOnboardingEarlyChecks.d.ts.map +1 -1
- package/lib/deviceSDK/hooks/useToggleOnboardingEarlyChecks.js +3 -2
- package/lib/deviceSDK/hooks/useToggleOnboardingEarlyChecks.js.map +1 -1
- package/lib/deviceSDK/hooks/useUpdateFirmware.d.ts +2 -1
- package/lib/deviceSDK/hooks/useUpdateFirmware.d.ts.map +1 -1
- package/lib/deviceSDK/hooks/useUpdateFirmware.js +3 -2
- package/lib/deviceSDK/hooks/useUpdateFirmware.js.map +1 -1
- package/lib/deviceSDK/tasks/getBatteryStatuses.d.ts +1 -0
- package/lib/deviceSDK/tasks/getBatteryStatuses.d.ts.map +1 -1
- package/lib/deviceSDK/tasks/getBatteryStatuses.js +2 -2
- package/lib/deviceSDK/tasks/getBatteryStatuses.js.map +1 -1
- package/lib/deviceSDK/tasks/getDeviceInfo.d.ts +2 -1
- package/lib/deviceSDK/tasks/getDeviceInfo.d.ts.map +1 -1
- package/lib/deviceSDK/tasks/getDeviceInfo.js +2 -2
- package/lib/deviceSDK/tasks/getDeviceInfo.js.map +1 -1
- package/lib/deviceSDK/tasks/getLatestFirmware.d.ts +1 -0
- package/lib/deviceSDK/tasks/getLatestFirmware.d.ts.map +1 -1
- package/lib/deviceSDK/tasks/getLatestFirmware.js +2 -2
- package/lib/deviceSDK/tasks/getLatestFirmware.js.map +1 -1
- package/lib/deviceSDK/tasks/toggleOnboardingEarlyCheck.d.ts +1 -0
- package/lib/deviceSDK/tasks/toggleOnboardingEarlyCheck.d.ts.map +1 -1
- package/lib/deviceSDK/tasks/toggleOnboardingEarlyCheck.js +2 -2
- package/lib/deviceSDK/tasks/toggleOnboardingEarlyCheck.js.map +1 -1
- package/lib/deviceSDK/tasks/updateFirmware.d.ts +1 -0
- package/lib/deviceSDK/tasks/updateFirmware.d.ts.map +1 -1
- package/lib/deviceSDK/tasks/updateFirmware.js +2 -2
- package/lib/deviceSDK/tasks/updateFirmware.js.map +1 -1
- package/lib/deviceSDK/transports/core.d.ts +1 -0
- package/lib/deviceSDK/transports/core.d.ts.map +1 -1
- package/lib/deviceSDK/transports/core.js +2 -2
- package/lib/deviceSDK/transports/core.js.map +1 -1
- package/lib/hw/actions/app.d.ts.map +1 -1
- package/lib/hw/actions/app.js +2 -1
- package/lib/hw/actions/app.js.map +1 -1
- package/lib/hw/actions/customLockScreenLoad.d.ts +1 -1
- package/lib/hw/actions/customLockScreenLoad.d.ts.map +1 -1
- package/lib/hw/actions/customLockScreenLoad.js +2 -0
- package/lib/hw/actions/customLockScreenLoad.js.map +1 -1
- package/lib/hw/actions/implementations.d.ts +1 -0
- package/lib/hw/actions/implementations.d.ts.map +1 -1
- package/lib/hw/actions/implementations.js +12 -2
- package/lib/hw/actions/implementations.js.map +1 -1
- package/lib/hw/connectApp.d.ts +2 -1
- package/lib/hw/connectApp.d.ts.map +1 -1
- package/lib/hw/connectApp.js +4 -4
- package/lib/hw/connectApp.js.map +1 -1
- package/lib/hw/connectManager.d.ts +2 -1
- package/lib/hw/connectManager.d.ts.map +1 -1
- package/lib/hw/connectManager.js +4 -4
- package/lib/hw/connectManager.js.map +1 -1
- package/lib/hw/customLockScreenFetch.d.ts +2 -1
- package/lib/hw/customLockScreenFetch.d.ts.map +1 -1
- package/lib/hw/customLockScreenFetch.js +2 -2
- package/lib/hw/customLockScreenFetch.js.map +1 -1
- package/lib/hw/customLockScreenLoad.d.ts +2 -1
- package/lib/hw/customLockScreenLoad.d.ts.map +1 -1
- package/lib/hw/customLockScreenLoad.js +2 -2
- package/lib/hw/customLockScreenLoad.js.map +1 -1
- package/lib/hw/deviceAccess.d.ts +3 -3
- package/lib/hw/deviceAccess.d.ts.map +1 -1
- package/lib/hw/deviceAccess.js +2 -1
- package/lib/hw/deviceAccess.js.map +1 -1
- package/lib/hw/getGenuineCheckFromDeviceId.d.ts +2 -1
- package/lib/hw/getGenuineCheckFromDeviceId.d.ts.map +1 -1
- package/lib/hw/getGenuineCheckFromDeviceId.js +2 -2
- package/lib/hw/getGenuineCheckFromDeviceId.js.map +1 -1
- package/lib/hw/getOnboardingStatePolling.d.ts +2 -1
- package/lib/hw/getOnboardingStatePolling.d.ts.map +1 -1
- package/lib/hw/getOnboardingStatePolling.js +5 -2
- package/lib/hw/getOnboardingStatePolling.js.map +1 -1
- package/lib/hw/hooks/useGenuineCheck.d.ts +2 -1
- package/lib/hw/hooks/useGenuineCheck.d.ts.map +1 -1
- package/lib/hw/hooks/useGenuineCheck.js +3 -1
- package/lib/hw/hooks/useGenuineCheck.js.map +1 -1
- package/lib/hw/index.d.ts +6 -2
- package/lib/hw/index.d.ts.map +1 -1
- package/lib/hw/index.js +6 -6
- package/lib/hw/index.js.map +1 -1
- package/lib/hw/installLanguage.d.ts +2 -1
- package/lib/hw/installLanguage.d.ts.map +1 -1
- package/lib/hw/installLanguage.js +2 -2
- package/lib/hw/installLanguage.js.map +1 -1
- package/lib/onboarding/hooks/useOnboardingStatePolling.d.ts.map +1 -1
- package/lib/onboarding/hooks/useOnboardingStatePolling.js +1 -0
- package/lib/onboarding/hooks/useOnboardingStatePolling.js.map +1 -1
- package/lib-es/deviceSDK/actions/getBatteryStatuses.d.ts +2 -1
- package/lib-es/deviceSDK/actions/getBatteryStatuses.d.ts.map +1 -1
- package/lib-es/deviceSDK/actions/getBatteryStatuses.js +2 -2
- package/lib-es/deviceSDK/actions/getBatteryStatuses.js.map +1 -1
- package/lib-es/deviceSDK/actions/getDeviceInfo.d.ts +2 -1
- package/lib-es/deviceSDK/actions/getDeviceInfo.d.ts.map +1 -1
- package/lib-es/deviceSDK/actions/getDeviceInfo.js +2 -2
- package/lib-es/deviceSDK/actions/getDeviceInfo.js.map +1 -1
- package/lib-es/deviceSDK/actions/getLatestAvailableFirmware.d.ts +2 -1
- package/lib-es/deviceSDK/actions/getLatestAvailableFirmware.d.ts.map +1 -1
- package/lib-es/deviceSDK/actions/getLatestAvailableFirmware.js +6 -3
- package/lib-es/deviceSDK/actions/getLatestAvailableFirmware.js.map +1 -1
- package/lib-es/deviceSDK/actions/toggleOnboardingEarlyCheck.d.ts +2 -1
- package/lib-es/deviceSDK/actions/toggleOnboardingEarlyCheck.d.ts.map +1 -1
- package/lib-es/deviceSDK/actions/toggleOnboardingEarlyCheck.js +2 -2
- package/lib-es/deviceSDK/actions/toggleOnboardingEarlyCheck.js.map +1 -1
- package/lib-es/deviceSDK/actions/updateFirmware.d.ts +2 -1
- package/lib-es/deviceSDK/actions/updateFirmware.d.ts.map +1 -1
- package/lib-es/deviceSDK/actions/updateFirmware.js +4 -3
- package/lib-es/deviceSDK/actions/updateFirmware.js.map +1 -1
- package/lib-es/deviceSDK/hooks/useBatteryStatuses.d.ts +2 -1
- package/lib-es/deviceSDK/hooks/useBatteryStatuses.d.ts.map +1 -1
- package/lib-es/deviceSDK/hooks/useBatteryStatuses.js +3 -2
- package/lib-es/deviceSDK/hooks/useBatteryStatuses.js.map +1 -1
- package/lib-es/deviceSDK/hooks/useGetDeviceInfo.d.ts +2 -1
- package/lib-es/deviceSDK/hooks/useGetDeviceInfo.d.ts.map +1 -1
- package/lib-es/deviceSDK/hooks/useGetDeviceInfo.js +3 -3
- package/lib-es/deviceSDK/hooks/useGetDeviceInfo.js.map +1 -1
- package/lib-es/deviceSDK/hooks/useGetLatestAvailableFirmware.d.ts +2 -1
- package/lib-es/deviceSDK/hooks/useGetLatestAvailableFirmware.d.ts.map +1 -1
- package/lib-es/deviceSDK/hooks/useGetLatestAvailableFirmware.js +2 -1
- package/lib-es/deviceSDK/hooks/useGetLatestAvailableFirmware.js.map +1 -1
- package/lib-es/deviceSDK/hooks/useToggleOnboardingEarlyChecks.d.ts +2 -1
- package/lib-es/deviceSDK/hooks/useToggleOnboardingEarlyChecks.d.ts.map +1 -1
- package/lib-es/deviceSDK/hooks/useToggleOnboardingEarlyChecks.js +3 -2
- package/lib-es/deviceSDK/hooks/useToggleOnboardingEarlyChecks.js.map +1 -1
- package/lib-es/deviceSDK/hooks/useUpdateFirmware.d.ts +2 -1
- package/lib-es/deviceSDK/hooks/useUpdateFirmware.d.ts.map +1 -1
- package/lib-es/deviceSDK/hooks/useUpdateFirmware.js +3 -2
- package/lib-es/deviceSDK/hooks/useUpdateFirmware.js.map +1 -1
- package/lib-es/deviceSDK/tasks/getBatteryStatuses.d.ts +1 -0
- package/lib-es/deviceSDK/tasks/getBatteryStatuses.d.ts.map +1 -1
- package/lib-es/deviceSDK/tasks/getBatteryStatuses.js +2 -2
- package/lib-es/deviceSDK/tasks/getBatteryStatuses.js.map +1 -1
- package/lib-es/deviceSDK/tasks/getDeviceInfo.d.ts +2 -1
- package/lib-es/deviceSDK/tasks/getDeviceInfo.d.ts.map +1 -1
- package/lib-es/deviceSDK/tasks/getDeviceInfo.js +2 -2
- package/lib-es/deviceSDK/tasks/getDeviceInfo.js.map +1 -1
- package/lib-es/deviceSDK/tasks/getLatestFirmware.d.ts +1 -0
- package/lib-es/deviceSDK/tasks/getLatestFirmware.d.ts.map +1 -1
- package/lib-es/deviceSDK/tasks/getLatestFirmware.js +2 -2
- package/lib-es/deviceSDK/tasks/getLatestFirmware.js.map +1 -1
- package/lib-es/deviceSDK/tasks/toggleOnboardingEarlyCheck.d.ts +1 -0
- package/lib-es/deviceSDK/tasks/toggleOnboardingEarlyCheck.d.ts.map +1 -1
- package/lib-es/deviceSDK/tasks/toggleOnboardingEarlyCheck.js +2 -2
- package/lib-es/deviceSDK/tasks/toggleOnboardingEarlyCheck.js.map +1 -1
- package/lib-es/deviceSDK/tasks/updateFirmware.d.ts +1 -0
- package/lib-es/deviceSDK/tasks/updateFirmware.d.ts.map +1 -1
- package/lib-es/deviceSDK/tasks/updateFirmware.js +2 -2
- package/lib-es/deviceSDK/tasks/updateFirmware.js.map +1 -1
- package/lib-es/deviceSDK/transports/core.d.ts +1 -0
- package/lib-es/deviceSDK/transports/core.d.ts.map +1 -1
- package/lib-es/deviceSDK/transports/core.js +2 -2
- package/lib-es/deviceSDK/transports/core.js.map +1 -1
- package/lib-es/hw/actions/app.d.ts.map +1 -1
- package/lib-es/hw/actions/app.js +2 -1
- package/lib-es/hw/actions/app.js.map +1 -1
- package/lib-es/hw/actions/customLockScreenLoad.d.ts +1 -1
- package/lib-es/hw/actions/customLockScreenLoad.d.ts.map +1 -1
- package/lib-es/hw/actions/customLockScreenLoad.js +2 -0
- package/lib-es/hw/actions/customLockScreenLoad.js.map +1 -1
- package/lib-es/hw/actions/implementations.d.ts +1 -0
- package/lib-es/hw/actions/implementations.d.ts.map +1 -1
- package/lib-es/hw/actions/implementations.js +12 -2
- package/lib-es/hw/actions/implementations.js.map +1 -1
- package/lib-es/hw/connectApp.d.ts +2 -1
- package/lib-es/hw/connectApp.d.ts.map +1 -1
- package/lib-es/hw/connectApp.js +4 -4
- package/lib-es/hw/connectApp.js.map +1 -1
- package/lib-es/hw/connectManager.d.ts +2 -1
- package/lib-es/hw/connectManager.d.ts.map +1 -1
- package/lib-es/hw/connectManager.js +4 -4
- package/lib-es/hw/connectManager.js.map +1 -1
- package/lib-es/hw/customLockScreenFetch.d.ts +2 -1
- package/lib-es/hw/customLockScreenFetch.d.ts.map +1 -1
- package/lib-es/hw/customLockScreenFetch.js +2 -2
- package/lib-es/hw/customLockScreenFetch.js.map +1 -1
- package/lib-es/hw/customLockScreenLoad.d.ts +2 -1
- package/lib-es/hw/customLockScreenLoad.d.ts.map +1 -1
- package/lib-es/hw/customLockScreenLoad.js +2 -2
- package/lib-es/hw/customLockScreenLoad.js.map +1 -1
- package/lib-es/hw/deviceAccess.d.ts +3 -3
- package/lib-es/hw/deviceAccess.d.ts.map +1 -1
- package/lib-es/hw/deviceAccess.js +2 -1
- package/lib-es/hw/deviceAccess.js.map +1 -1
- package/lib-es/hw/getGenuineCheckFromDeviceId.d.ts +2 -1
- package/lib-es/hw/getGenuineCheckFromDeviceId.d.ts.map +1 -1
- package/lib-es/hw/getGenuineCheckFromDeviceId.js +2 -2
- package/lib-es/hw/getGenuineCheckFromDeviceId.js.map +1 -1
- package/lib-es/hw/getOnboardingStatePolling.d.ts +2 -1
- package/lib-es/hw/getOnboardingStatePolling.d.ts.map +1 -1
- package/lib-es/hw/getOnboardingStatePolling.js +5 -2
- package/lib-es/hw/getOnboardingStatePolling.js.map +1 -1
- package/lib-es/hw/hooks/useGenuineCheck.d.ts +2 -1
- package/lib-es/hw/hooks/useGenuineCheck.d.ts.map +1 -1
- package/lib-es/hw/hooks/useGenuineCheck.js +3 -1
- package/lib-es/hw/hooks/useGenuineCheck.js.map +1 -1
- package/lib-es/hw/index.d.ts +6 -2
- package/lib-es/hw/index.d.ts.map +1 -1
- package/lib-es/hw/index.js +6 -6
- package/lib-es/hw/index.js.map +1 -1
- package/lib-es/hw/installLanguage.d.ts +2 -1
- package/lib-es/hw/installLanguage.d.ts.map +1 -1
- package/lib-es/hw/installLanguage.js +2 -2
- package/lib-es/hw/installLanguage.js.map +1 -1
- package/lib-es/onboarding/hooks/useOnboardingStatePolling.d.ts.map +1 -1
- package/lib-es/onboarding/hooks/useOnboardingStatePolling.js +1 -0
- package/lib-es/onboarding/hooks/useOnboardingStatePolling.js.map +1 -1
- package/package.json +4 -4
- package/src/deviceSDK/actions/getBatteryStatuses.ts +3 -1
- package/src/deviceSDK/actions/getDeviceInfo.ts +3 -2
- package/src/deviceSDK/actions/getLatestAvailableFirmware.test.ts +31 -0
- package/src/deviceSDK/actions/getLatestAvailableFirmware.ts +7 -2
- package/src/deviceSDK/actions/toggleOnboardingEarlyCheck.ts +3 -1
- package/src/deviceSDK/actions/updateFirmware.ts +5 -2
- package/src/deviceSDK/hooks/useBatteryStatuses.test.ts +1 -1
- package/src/deviceSDK/hooks/useBatteryStatuses.ts +4 -1
- package/src/deviceSDK/hooks/useGetDeviceInfo.ts +4 -2
- package/src/deviceSDK/hooks/useGetLatestAvailableFirmware.ts +3 -0
- package/src/deviceSDK/hooks/useToggleOnboardingEarlyChecks.test.ts +2 -0
- package/src/deviceSDK/hooks/useToggleOnboardingEarlyChecks.ts +4 -1
- package/src/deviceSDK/hooks/useUpdateFirmware.ts +4 -1
- package/src/deviceSDK/tasks/getBatteryStatuses.ts +6 -1
- package/src/deviceSDK/tasks/getDeviceInfo.ts +6 -2
- package/src/deviceSDK/tasks/getLatestFirmware.ts +6 -1
- package/src/deviceSDK/tasks/toggleOnboardingEarlyCheck.test.ts +3 -0
- package/src/deviceSDK/tasks/toggleOnboardingEarlyCheck.ts +6 -1
- package/src/deviceSDK/tasks/updateFirmware.ts +6 -1
- package/src/deviceSDK/transports/core.ts +6 -3
- package/src/hw/actions/app.ts +2 -1
- package/src/hw/actions/customLockScreenLoad.ts +6 -2
- package/src/hw/actions/implementations.ts +17 -3
- package/src/hw/connectApp.ts +12 -5
- package/src/hw/connectManager.ts +13 -6
- package/src/hw/customLockScreenFetch.ts +10 -2
- package/src/hw/customLockScreenLoad.test.ts +28 -3
- package/src/hw/customLockScreenLoad.ts +10 -2
- package/src/hw/deviceAccess.ts +4 -3
- package/src/hw/getGenuineCheckFromDeviceId.test.ts +4 -0
- package/src/hw/getGenuineCheckFromDeviceId.ts +6 -1
- package/src/hw/getOnboardingStatePolling.test.ts +34 -0
- package/src/hw/getOnboardingStatePolling.ts +6 -3
- package/src/hw/hooks/useGenuineCheck.test.ts +37 -0
- package/src/hw/hooks/useGenuineCheck.ts +4 -0
- package/src/hw/index.test.ts +27 -6
- package/src/hw/index.ts +15 -8
- package/src/hw/installLanguage.ts +6 -1
- package/src/onboarding/hooks/useOnboardingStatePolling.ts +1 -0
|
@@ -10,6 +10,7 @@ const STATE_UPDATE_THROTTLE = 500;
|
|
|
10
10
|
|
|
11
11
|
export type UseUpdateFirmwareArgs = {
|
|
12
12
|
deviceId: string;
|
|
13
|
+
deviceName: string | null;
|
|
13
14
|
updateFirmwareAction?: typeof defaultUpdateFirmwareAction;
|
|
14
15
|
};
|
|
15
16
|
|
|
@@ -22,6 +23,7 @@ export type UseUpdateFirmwareArgs = {
|
|
|
22
23
|
*/
|
|
23
24
|
export function useUpdateFirmware({
|
|
24
25
|
deviceId,
|
|
26
|
+
deviceName,
|
|
25
27
|
updateFirmwareAction = defaultUpdateFirmwareAction,
|
|
26
28
|
}: UseUpdateFirmwareArgs): {
|
|
27
29
|
updateState: UpdateFirmwareActionState;
|
|
@@ -34,6 +36,7 @@ export function useUpdateFirmware({
|
|
|
34
36
|
if (nonce > 0) {
|
|
35
37
|
const sub = updateFirmwareAction({
|
|
36
38
|
deviceId,
|
|
39
|
+
deviceName,
|
|
37
40
|
})
|
|
38
41
|
.pipe(
|
|
39
42
|
// in order to correctly throttle the events without losing any important events
|
|
@@ -52,7 +55,7 @@ export function useUpdateFirmware({
|
|
|
52
55
|
sub.unsubscribe();
|
|
53
56
|
};
|
|
54
57
|
}
|
|
55
|
-
}, [deviceId, updateFirmwareAction, nonce]);
|
|
58
|
+
}, [deviceId, updateFirmwareAction, nonce, deviceName]);
|
|
56
59
|
|
|
57
60
|
const triggerUpdate = useCallback(() => {
|
|
58
61
|
setUpdateState(initialState);
|
|
@@ -12,6 +12,7 @@ import getBatteryStatus from "../commands/getBatteryStatus";
|
|
|
12
12
|
|
|
13
13
|
export type GetBatteryStatusesTaskArgs = {
|
|
14
14
|
deviceId: DeviceId;
|
|
15
|
+
deviceName: string | null;
|
|
15
16
|
statuses: BatteryStatusTypes[];
|
|
16
17
|
};
|
|
17
18
|
|
|
@@ -30,10 +31,14 @@ export type GetBatteryStatusesTaskEvent =
|
|
|
30
31
|
|
|
31
32
|
function internalGetBatteryStatusesTask({
|
|
32
33
|
deviceId,
|
|
34
|
+
deviceName,
|
|
33
35
|
statuses,
|
|
34
36
|
}: GetBatteryStatusesTaskArgs): Observable<GetBatteryStatusesTaskEvent> {
|
|
35
37
|
return new Observable(subscriber => {
|
|
36
|
-
return withTransport(
|
|
38
|
+
return withTransport(
|
|
39
|
+
deviceId,
|
|
40
|
+
deviceName ? { matchDeviceByName: deviceName } : undefined,
|
|
41
|
+
)(({ transportRef }) =>
|
|
37
42
|
quitApp(transportRef.current).pipe(
|
|
38
43
|
switchMap(() => {
|
|
39
44
|
const statusesObservable = statuses.map(statusType =>
|
|
@@ -15,7 +15,7 @@ import { withTransport } from "../transports/core";
|
|
|
15
15
|
const ManagerAllowedFlag = 0x08;
|
|
16
16
|
const PinValidatedFlag = 0x80;
|
|
17
17
|
|
|
18
|
-
export type GetDeviceInfoTaskArgs = { deviceId: DeviceId };
|
|
18
|
+
export type GetDeviceInfoTaskArgs = { deviceId: DeviceId; deviceName: string | null };
|
|
19
19
|
|
|
20
20
|
// No taskError for getDeviceInfoTask. Kept for consistency with other tasks.
|
|
21
21
|
export type GetDeviceInfoTaskError = "None";
|
|
@@ -33,10 +33,14 @@ export type GetDeviceInfoTaskEvent =
|
|
|
33
33
|
// Exported for tests
|
|
34
34
|
export function internalGetDeviceInfoTask({
|
|
35
35
|
deviceId,
|
|
36
|
+
deviceName,
|
|
36
37
|
}: GetDeviceInfoTaskArgs): Observable<GetDeviceInfoTaskEvent> {
|
|
37
38
|
return new Observable(subscriber => {
|
|
38
39
|
return (
|
|
39
|
-
withTransport(
|
|
40
|
+
withTransport(
|
|
41
|
+
deviceId,
|
|
42
|
+
deviceName ? { matchDeviceByName: deviceName } : undefined,
|
|
43
|
+
)(({ transportRef }) =>
|
|
40
44
|
quitApp(transportRef.current).pipe(
|
|
41
45
|
switchMap(() => {
|
|
42
46
|
return retryOnErrorsCommandWrapper({
|
|
@@ -10,6 +10,7 @@ import { getLatestFirmwareForDeviceUseCase } from "../../device/use-cases/getLat
|
|
|
10
10
|
|
|
11
11
|
export type GetLatestFirmwareTaskArgs = {
|
|
12
12
|
deviceId: DeviceId;
|
|
13
|
+
deviceName: string | null;
|
|
13
14
|
deviceInfo: DeviceInfo;
|
|
14
15
|
};
|
|
15
16
|
|
|
@@ -27,10 +28,14 @@ export type GetLatestFirmwareTaskEvent =
|
|
|
27
28
|
|
|
28
29
|
function internalGetLatestFirmwareTask({
|
|
29
30
|
deviceId,
|
|
31
|
+
deviceName,
|
|
30
32
|
deviceInfo,
|
|
31
33
|
}: GetLatestFirmwareTaskArgs): Observable<GetLatestFirmwareTaskEvent> {
|
|
32
34
|
return new Observable(subscriber => {
|
|
33
|
-
return withDevice(
|
|
35
|
+
return withDevice(
|
|
36
|
+
deviceId,
|
|
37
|
+
deviceName ? { matchDeviceByName: deviceName } : undefined,
|
|
38
|
+
)(transport =>
|
|
34
39
|
quitApp(transport).pipe(
|
|
35
40
|
switchMap(() => {
|
|
36
41
|
return from(getLatestFirmwareForDeviceUseCase(deviceInfo));
|
|
@@ -26,6 +26,7 @@ describe("@deviceSDK/tasks/toggleOnboardingEarlyCheckTask", () => {
|
|
|
26
26
|
// `enter` and `exit` have the same behavior
|
|
27
27
|
toggleOnboardingEarlyCheckTask({
|
|
28
28
|
deviceId: "",
|
|
29
|
+
deviceName: null,
|
|
29
30
|
toggleType: "exit",
|
|
30
31
|
}).subscribe({
|
|
31
32
|
next: event => {
|
|
@@ -47,6 +48,7 @@ describe("@deviceSDK/tasks/toggleOnboardingEarlyCheckTask", () => {
|
|
|
47
48
|
|
|
48
49
|
toggleOnboardingEarlyCheckTask({
|
|
49
50
|
deviceId: "",
|
|
51
|
+
deviceName: null,
|
|
50
52
|
toggleType: "enter",
|
|
51
53
|
}).subscribe({
|
|
52
54
|
next: event => {
|
|
@@ -78,6 +80,7 @@ describe("@deviceSDK/tasks/toggleOnboardingEarlyCheckTask", () => {
|
|
|
78
80
|
|
|
79
81
|
toggleOnboardingEarlyCheckTask({
|
|
80
82
|
deviceId: "",
|
|
83
|
+
deviceName: null,
|
|
81
84
|
toggleType: "enter",
|
|
82
85
|
}).subscribe({
|
|
83
86
|
next: event => {
|
|
@@ -26,11 +26,13 @@ export type ToggleOnboardingEarlyCheckTaskEvent =
|
|
|
26
26
|
|
|
27
27
|
export type ToggleOnboardingEarlyCheckTaskArgs = {
|
|
28
28
|
deviceId: DeviceId;
|
|
29
|
+
deviceName: string | null;
|
|
29
30
|
toggleType: "enter" | "exit";
|
|
30
31
|
};
|
|
31
32
|
|
|
32
33
|
function internalToggleOnboardingEarlyCheckTask({
|
|
33
34
|
deviceId,
|
|
35
|
+
deviceName,
|
|
34
36
|
toggleType,
|
|
35
37
|
}: ToggleOnboardingEarlyCheckTaskArgs): Observable<ToggleOnboardingEarlyCheckTaskEvent> {
|
|
36
38
|
const tracer = new LocalTracer(LOG_TYPE, {
|
|
@@ -42,7 +44,10 @@ function internalToggleOnboardingEarlyCheckTask({
|
|
|
42
44
|
const p2 = toggleType === "enter" ? ToggleTypeP2.EnterChecking : ToggleTypeP2.ExitChecking;
|
|
43
45
|
|
|
44
46
|
return new Observable(subscriber => {
|
|
45
|
-
withTransport(
|
|
47
|
+
withTransport(
|
|
48
|
+
deviceId,
|
|
49
|
+
deviceName ? { matchDeviceByName: deviceName } : undefined,
|
|
50
|
+
)(({ transportRef }) =>
|
|
46
51
|
toggleOnboardingEarlyCheckCmd({
|
|
47
52
|
transport: transportRef.current,
|
|
48
53
|
p2,
|
|
@@ -40,6 +40,7 @@ import {
|
|
|
40
40
|
|
|
41
41
|
export type UpdateFirmwareTaskArgs = {
|
|
42
42
|
deviceId: DeviceId;
|
|
43
|
+
deviceName: string | null;
|
|
43
44
|
updateContext: FirmwareUpdateContext;
|
|
44
45
|
};
|
|
45
46
|
|
|
@@ -83,6 +84,7 @@ const waitForGetVersion = retryOnErrorsCommandWrapper({
|
|
|
83
84
|
|
|
84
85
|
function internalUpdateFirmwareTask({
|
|
85
86
|
deviceId,
|
|
87
|
+
deviceName,
|
|
86
88
|
updateContext,
|
|
87
89
|
}: UpdateFirmwareTaskArgs): Observable<UpdateFirmwareTaskEvent> {
|
|
88
90
|
const tracer = new LocalTracer(LOG_TYPE, {
|
|
@@ -90,7 +92,10 @@ function internalUpdateFirmwareTask({
|
|
|
90
92
|
});
|
|
91
93
|
|
|
92
94
|
return new Observable(subscriber => {
|
|
93
|
-
const sub = withTransport(
|
|
95
|
+
const sub = withTransport(
|
|
96
|
+
deviceId,
|
|
97
|
+
deviceName ? { matchDeviceByName: deviceName } : undefined,
|
|
98
|
+
)(({ transportRef }) =>
|
|
94
99
|
concat(
|
|
95
100
|
quitApp(transportRef.current).pipe(
|
|
96
101
|
switchMap(() => {
|
|
@@ -63,7 +63,10 @@ export type JobArgs = {
|
|
|
63
63
|
* job: the job to execute with the transport. It takes:
|
|
64
64
|
* - transportRef: a reference to the transport that can be updated by calling a transportRef.refreshTransport()
|
|
65
65
|
*/
|
|
66
|
-
export const withTransport = (
|
|
66
|
+
export const withTransport = (
|
|
67
|
+
deviceId: string,
|
|
68
|
+
options?: { openTimeoutMs?: number; matchDeviceByName?: string },
|
|
69
|
+
) => {
|
|
67
70
|
return <T>(job: ({ transportRef }: JobArgs) => Observable<T>): Observable<T> =>
|
|
68
71
|
new Observable(subscriber => {
|
|
69
72
|
const queuedJobManager = DeviceQueuedJobsManager.getInstance();
|
|
@@ -149,7 +152,7 @@ export const withTransport = (deviceId: string, options?: { openTimeoutMs?: numb
|
|
|
149
152
|
close(transportRef.current, deviceId)
|
|
150
153
|
// Silently ignore errors on transport close
|
|
151
154
|
.catch(() => {})
|
|
152
|
-
.then(async () => open(deviceId, options
|
|
155
|
+
.then(async () => open(deviceId, options, tracer.getContext()))
|
|
153
156
|
.then(async newTransport => {
|
|
154
157
|
await setupTransport(transportRef.current);
|
|
155
158
|
|
|
@@ -176,7 +179,7 @@ export const withTransport = (deviceId: string, options?: { openTimeoutMs?: numb
|
|
|
176
179
|
currentJobId: jobId,
|
|
177
180
|
});
|
|
178
181
|
|
|
179
|
-
return open(deviceId, options
|
|
182
|
+
return open(deviceId, options, tracer.getContext());
|
|
180
183
|
})
|
|
181
184
|
.then(transport => {
|
|
182
185
|
return buildRefreshableTransport(transport);
|
package/src/hw/actions/app.ts
CHANGED
|
@@ -468,12 +468,13 @@ export const createAction = (
|
|
|
468
468
|
);
|
|
469
469
|
|
|
470
470
|
const task: (arg0: ConnectAppInput) => Observable<ConnectAppEvent> = useCallback(
|
|
471
|
-
({ deviceId, request }: ConnectAppInput) => {
|
|
471
|
+
({ deviceId, deviceName, request }: ConnectAppInput) => {
|
|
472
472
|
//To avoid redundant checks, we remove passed checks from the request.
|
|
473
473
|
const { dependencies, requireLatestFirmware } = request;
|
|
474
474
|
|
|
475
475
|
return connectAppExec({
|
|
476
476
|
deviceId,
|
|
477
|
+
deviceName,
|
|
477
478
|
request: {
|
|
478
479
|
...request,
|
|
479
480
|
dependencies: dependenciesResolvedRef.current ? undefined : dependencies,
|
|
@@ -37,7 +37,7 @@ type ActionState = State & {
|
|
|
37
37
|
onRetry: () => void;
|
|
38
38
|
};
|
|
39
39
|
|
|
40
|
-
type LoadImageAction = Action<LoadImageRequest, ActionState, LoadimageResult>;
|
|
40
|
+
type LoadImageAction = Action<LoadImageRequest | undefined, ActionState, LoadimageResult>;
|
|
41
41
|
|
|
42
42
|
const mapResult = ({ imageHash, imageSize }: State) => ({
|
|
43
43
|
imageHash,
|
|
@@ -131,12 +131,16 @@ export const reducer = (state: State, e: Event): State => {
|
|
|
131
131
|
export const createAction = (
|
|
132
132
|
task: (arg0: LoadImageInput) => Observable<LoadImageEvent>,
|
|
133
133
|
): LoadImageAction => {
|
|
134
|
-
const useHook = (
|
|
134
|
+
const useHook = (
|
|
135
|
+
device: Device | null | undefined,
|
|
136
|
+
request: LoadImageRequest | undefined,
|
|
137
|
+
): ActionState => {
|
|
135
138
|
const [state, setState] = useState(() => getInitialState(device));
|
|
136
139
|
const [resetIndex, setResetIndex] = useState(0);
|
|
137
140
|
const deviceSubject = useReplaySubject(device);
|
|
138
141
|
|
|
139
142
|
useEffect(() => {
|
|
143
|
+
if (!request) return;
|
|
140
144
|
if (state.imageLoaded) return;
|
|
141
145
|
|
|
142
146
|
const impl = getImplementation(currentMode)<LoadImageEvent, LoadImageRequest>({
|
|
@@ -46,7 +46,11 @@ type PollingImplementationConfig = {
|
|
|
46
46
|
|
|
47
47
|
type PollingImplementationParams<Request, EmittedEvents> = {
|
|
48
48
|
deviceSubject: ReplaySubject<Device | null | undefined>;
|
|
49
|
-
task: (params: {
|
|
49
|
+
task: (params: {
|
|
50
|
+
deviceId: string;
|
|
51
|
+
deviceName: string | null;
|
|
52
|
+
request: Request;
|
|
53
|
+
}) => Observable<EmittedEvents>;
|
|
50
54
|
request: Request;
|
|
51
55
|
config?: PollingImplementationConfig;
|
|
52
56
|
// retryableWithDelayDisconnectedErrors has default value of [DisconnectedDevice, DisconnectedDeviceDuringOperation]
|
|
@@ -120,7 +124,11 @@ const pollingImplementation: Implementation = <SpecificType, GenericRequestType>
|
|
|
120
124
|
device: currentDevice,
|
|
121
125
|
replaceable: !firstRound,
|
|
122
126
|
}),
|
|
123
|
-
task({
|
|
127
|
+
task({
|
|
128
|
+
deviceId: currentDevice.deviceId,
|
|
129
|
+
deviceName: currentDevice.deviceName ?? null,
|
|
130
|
+
request,
|
|
131
|
+
}),
|
|
124
132
|
)
|
|
125
133
|
.pipe(
|
|
126
134
|
// Any event should clear the initialTimeout.
|
|
@@ -230,7 +238,13 @@ const eventImplementation: Implementation = <SpecificType, GenericRequestType>(
|
|
|
230
238
|
|
|
231
239
|
return concat(
|
|
232
240
|
initialEvent,
|
|
233
|
-
|
|
241
|
+
device
|
|
242
|
+
? task({
|
|
243
|
+
deviceId: device.deviceId,
|
|
244
|
+
deviceName: device.deviceName ?? null,
|
|
245
|
+
request,
|
|
246
|
+
})
|
|
247
|
+
: EMPTY,
|
|
234
248
|
);
|
|
235
249
|
}),
|
|
236
250
|
catchError((error: Error) =>
|
package/src/hw/connectApp.ts
CHANGED
|
@@ -48,6 +48,7 @@ export type RequiresDerivation = {
|
|
|
48
48
|
};
|
|
49
49
|
export type Input = {
|
|
50
50
|
deviceId: string;
|
|
51
|
+
deviceName: string | null;
|
|
51
52
|
request: ConnectAppRequest;
|
|
52
53
|
};
|
|
53
54
|
export type ConnectAppRequest = {
|
|
@@ -524,10 +525,13 @@ export default function connectAppFactory(
|
|
|
524
525
|
} = { isLdmkConnectAppEnabled: false },
|
|
525
526
|
) {
|
|
526
527
|
if (!isLdmkConnectAppEnabled) {
|
|
527
|
-
return ({ deviceId, request }: Input): Observable<ConnectAppEvent> =>
|
|
528
|
-
withDevice(
|
|
528
|
+
return ({ deviceId, deviceName, request }: Input): Observable<ConnectAppEvent> =>
|
|
529
|
+
withDevice(
|
|
530
|
+
deviceId,
|
|
531
|
+
deviceName ? { matchDeviceByName: deviceName } : undefined,
|
|
532
|
+
)(transport => cmd(transport, { deviceId, deviceName, request }));
|
|
529
533
|
}
|
|
530
|
-
return ({ deviceId, request }: Input): Observable<ConnectAppEvent> => {
|
|
534
|
+
return ({ deviceId, deviceName, request }: Input): Observable<ConnectAppEvent> => {
|
|
531
535
|
const {
|
|
532
536
|
appName,
|
|
533
537
|
requiresDerivation,
|
|
@@ -535,9 +539,12 @@ export default function connectAppFactory(
|
|
|
535
539
|
requireLatestFirmware,
|
|
536
540
|
allowPartialDependencies = false,
|
|
537
541
|
} = request;
|
|
538
|
-
return withDevice(
|
|
542
|
+
return withDevice(
|
|
543
|
+
deviceId,
|
|
544
|
+
deviceName ? { matchDeviceByName: deviceName } : undefined,
|
|
545
|
+
)(transport => {
|
|
539
546
|
if (!isDmkTransport(transport)) {
|
|
540
|
-
return cmd(transport, { deviceId, request });
|
|
547
|
+
return cmd(transport, { deviceId, deviceName, request });
|
|
541
548
|
}
|
|
542
549
|
const { dmk, sessionId } = transport;
|
|
543
550
|
const deviceAction = new ConnectAppDeviceAction({
|
package/src/hw/connectManager.ts
CHANGED
|
@@ -27,6 +27,7 @@ import { extractOnboardingState, OnboardingStep } from "./extractOnboardingState
|
|
|
27
27
|
|
|
28
28
|
export type Input = {
|
|
29
29
|
deviceId: string;
|
|
30
|
+
deviceName: string | null;
|
|
30
31
|
request: ManagerRequest | null | undefined;
|
|
31
32
|
};
|
|
32
33
|
|
|
@@ -159,13 +160,19 @@ export default function connectManagerFactory(
|
|
|
159
160
|
} = { isLdmkConnectAppEnabled: false },
|
|
160
161
|
) {
|
|
161
162
|
if (!isLdmkConnectAppEnabled) {
|
|
162
|
-
return ({ deviceId, request }: Input): Observable<ConnectManagerEvent> =>
|
|
163
|
-
withDevice(
|
|
163
|
+
return ({ deviceId, deviceName, request }: Input): Observable<ConnectManagerEvent> =>
|
|
164
|
+
withDevice(
|
|
165
|
+
deviceId,
|
|
166
|
+
deviceName ? { matchDeviceByName: deviceName } : undefined,
|
|
167
|
+
)(transport => cmd(transport, { deviceId, deviceName, request }));
|
|
164
168
|
}
|
|
165
|
-
return ({ deviceId, request }: Input): Observable<ConnectManagerEvent> =>
|
|
166
|
-
withDevice(
|
|
169
|
+
return ({ deviceId, deviceName, request }: Input): Observable<ConnectManagerEvent> =>
|
|
170
|
+
withDevice(
|
|
171
|
+
deviceId,
|
|
172
|
+
deviceName ? { matchDeviceByName: deviceName } : undefined,
|
|
173
|
+
)(transport => {
|
|
167
174
|
if (!isDmkTransport(transport)) {
|
|
168
|
-
return cmd(transport, { deviceId, request });
|
|
175
|
+
return cmd(transport, { deviceId, deviceName, request });
|
|
169
176
|
}
|
|
170
177
|
const { dmk, sessionId } = transport;
|
|
171
178
|
const deviceAction = new PrepareConnectManagerDeviceAction({
|
|
@@ -179,6 +186,6 @@ export default function connectManagerFactory(
|
|
|
179
186
|
});
|
|
180
187
|
return new PrepareConnectManagerEventMapper(observable)
|
|
181
188
|
.map()
|
|
182
|
-
.pipe(concatWith(cmd(transport, { deviceId, request })));
|
|
189
|
+
.pipe(concatWith(cmd(transport, { deviceId, deviceName, request })));
|
|
183
190
|
});
|
|
184
191
|
}
|
|
@@ -47,13 +47,21 @@ export type FetchImageRequest = {
|
|
|
47
47
|
|
|
48
48
|
export type Input = {
|
|
49
49
|
deviceId: string;
|
|
50
|
+
deviceName: string | null;
|
|
50
51
|
request: FetchImageRequest;
|
|
51
52
|
};
|
|
52
53
|
|
|
53
|
-
export default function fetchImage({
|
|
54
|
+
export default function fetchImage({
|
|
55
|
+
deviceId,
|
|
56
|
+
deviceName,
|
|
57
|
+
request,
|
|
58
|
+
}: Input): Observable<FetchImageEvent> {
|
|
54
59
|
const { backupHash, allowedEmpty = false, deviceModelId } = request;
|
|
55
60
|
|
|
56
|
-
const sub = withDevice(
|
|
61
|
+
const sub = withDevice(
|
|
62
|
+
deviceId,
|
|
63
|
+
deviceName ? { matchDeviceByName: deviceName } : undefined,
|
|
64
|
+
)(
|
|
57
65
|
transport =>
|
|
58
66
|
new Observable(subscriber => {
|
|
59
67
|
const timeoutSub = of<FetchImageEvent>({
|
|
@@ -9,8 +9,12 @@ const mockTransport = {
|
|
|
9
9
|
send: jest.fn(),
|
|
10
10
|
getTraceContext: jest.fn(),
|
|
11
11
|
};
|
|
12
|
+
const mockWithTransport = jest.fn(
|
|
13
|
+
(_deviceId: string, _options?: any) => callback =>
|
|
14
|
+
callback({ transportRef: { current: mockTransport } }),
|
|
15
|
+
);
|
|
12
16
|
jest.mock("../deviceSDK/transports/core", () => ({
|
|
13
|
-
withTransport: (
|
|
17
|
+
withTransport: (deviceId: string, options?: any) => mockWithTransport(deviceId, options),
|
|
14
18
|
}));
|
|
15
19
|
jest.mock("./getDeviceInfo", () => jest.fn(() => of([])));
|
|
16
20
|
|
|
@@ -24,7 +28,9 @@ describe("customLockScreenLoad", () => {
|
|
|
24
28
|
mockTransport.send.mockResolvedValue(Buffer.from([0x42, 0x42, 0x43, 0x90, 0x00]));
|
|
25
29
|
|
|
26
30
|
// when
|
|
27
|
-
const ret = await lastValueFrom(
|
|
31
|
+
const ret = await lastValueFrom(
|
|
32
|
+
await customLockScreenLoad({ deviceId: "deviceId", deviceName: null, request }),
|
|
33
|
+
);
|
|
28
34
|
|
|
29
35
|
// then
|
|
30
36
|
expect(mockTransport.send).toHaveBeenNthCalledWith(
|
|
@@ -78,9 +84,28 @@ describe("customLockScreenLoad", () => {
|
|
|
78
84
|
|
|
79
85
|
// when
|
|
80
86
|
try {
|
|
81
|
-
await lastValueFrom(
|
|
87
|
+
await lastValueFrom(
|
|
88
|
+
await customLockScreenLoad({ deviceId: "nanoX", deviceName: null, request }),
|
|
89
|
+
);
|
|
82
90
|
} catch (err) {
|
|
83
91
|
expect(err).toStrictEqual(error);
|
|
84
92
|
}
|
|
85
93
|
});
|
|
94
|
+
|
|
95
|
+
it("should pass deviceName to withTransport", async () => {
|
|
96
|
+
const request = {
|
|
97
|
+
deviceModelId: DeviceModelId.stax as CLSSupportedDeviceModelId,
|
|
98
|
+
hexImage: "hello_world",
|
|
99
|
+
};
|
|
100
|
+
mockTransport.send.mockResolvedValue(Buffer.from([0x42, 0x42, 0x43, 0x90, 0x00]));
|
|
101
|
+
|
|
102
|
+
await lastValueFrom(
|
|
103
|
+
await customLockScreenLoad({ deviceId: "deviceId", deviceName: "My Device", request }),
|
|
104
|
+
);
|
|
105
|
+
|
|
106
|
+
expect(mockWithTransport).toHaveBeenCalledWith(
|
|
107
|
+
"deviceId",
|
|
108
|
+
expect.objectContaining({ matchDeviceByName: "My Device" }),
|
|
109
|
+
);
|
|
110
|
+
});
|
|
86
111
|
});
|
|
@@ -68,14 +68,22 @@ export type LoadImageRequest = {
|
|
|
68
68
|
|
|
69
69
|
export type Input = {
|
|
70
70
|
deviceId: string;
|
|
71
|
+
deviceName: string | null;
|
|
71
72
|
request: LoadImageRequest;
|
|
72
73
|
};
|
|
73
74
|
|
|
74
|
-
export default function loadImage({
|
|
75
|
+
export default function loadImage({
|
|
76
|
+
deviceId,
|
|
77
|
+
deviceName,
|
|
78
|
+
request,
|
|
79
|
+
}: Input): Observable<LoadImageEvent> {
|
|
75
80
|
const { hexImage, padImage = true, deviceModelId } = request;
|
|
76
81
|
const screenSpecs = getScreenSpecs(deviceModelId);
|
|
77
82
|
|
|
78
|
-
const sub = withTransport(
|
|
83
|
+
const sub = withTransport(
|
|
84
|
+
deviceId,
|
|
85
|
+
deviceName ? { matchDeviceByName: deviceName } : undefined,
|
|
86
|
+
)(
|
|
79
87
|
({ transportRef }) =>
|
|
80
88
|
new Observable(subscriber => {
|
|
81
89
|
const timeoutSub = of<LoadImageEvent>({ type: "unresponsiveDevice" })
|
package/src/hw/deviceAccess.ts
CHANGED
|
@@ -17,7 +17,7 @@ import {
|
|
|
17
17
|
} from "@ledgerhq/errors";
|
|
18
18
|
import { LocalTracer, TraceContext, trace } from "@ledgerhq/logs";
|
|
19
19
|
import { getEnv } from "@ledgerhq/live-env";
|
|
20
|
-
import { open, close } from ".";
|
|
20
|
+
import { open, close, OpenOptions } from ".";
|
|
21
21
|
|
|
22
22
|
const LOG_TYPE = "hw";
|
|
23
23
|
|
|
@@ -172,9 +172,10 @@ export class DeviceQueuedJobsManager {
|
|
|
172
172
|
* @param deviceId
|
|
173
173
|
* @param options contains optional configuration
|
|
174
174
|
* - openTimeoutMs: optional timeout that limits in time the open attempt of the matching registered transport.
|
|
175
|
+
* - matchDeviceByName: optional name of the device to match.
|
|
175
176
|
*/
|
|
176
177
|
export const withDevice =
|
|
177
|
-
(deviceId: string, options?:
|
|
178
|
+
(deviceId: string, options?: OpenOptions) =>
|
|
178
179
|
<T>(job: (t: Transport) => Observable<T>): Observable<T> =>
|
|
179
180
|
new Observable(o => {
|
|
180
181
|
const queuedJobManager = DeviceQueuedJobsManager.getInstance();
|
|
@@ -221,7 +222,7 @@ export const withDevice =
|
|
|
221
222
|
previousJobId: previousQueuedJob.id,
|
|
222
223
|
currentJobId: jobId,
|
|
223
224
|
});
|
|
224
|
-
return open(deviceId, options
|
|
225
|
+
return open(deviceId, options, tracer.getContext());
|
|
225
226
|
}) // open the transport
|
|
226
227
|
.then(async transport => {
|
|
227
228
|
tracer.trace("Got a Transport instance from open");
|
|
@@ -85,6 +85,7 @@ describe("getGenuineCheckFromDeviceId", () => {
|
|
|
85
85
|
let step = 1;
|
|
86
86
|
getGenuineCheckFromDeviceId({
|
|
87
87
|
deviceId: "A_DEVICE_ID",
|
|
88
|
+
deviceName: null,
|
|
88
89
|
lockedDeviceTimeoutMs: 1000,
|
|
89
90
|
}).subscribe({
|
|
90
91
|
next: ({ socketEvent, lockedDevice }: GetGenuineCheckFromDeviceIdResult) => {
|
|
@@ -147,6 +148,7 @@ describe("getGenuineCheckFromDeviceId", () => {
|
|
|
147
148
|
let step = 1;
|
|
148
149
|
getGenuineCheckFromDeviceId({
|
|
149
150
|
deviceId: "A_DEVICE_ID",
|
|
151
|
+
deviceName: null,
|
|
150
152
|
lockedDeviceTimeoutMs: 1000,
|
|
151
153
|
}).subscribe({
|
|
152
154
|
next: ({ socketEvent, lockedDevice }: GetGenuineCheckFromDeviceIdResult) => {
|
|
@@ -227,6 +229,7 @@ describe("getGenuineCheckFromDeviceId", () => {
|
|
|
227
229
|
let step = 1;
|
|
228
230
|
const subscriber = getGenuineCheckFromDeviceId({
|
|
229
231
|
deviceId: "A_DEVICE_ID",
|
|
232
|
+
deviceName: null,
|
|
230
233
|
lockedDeviceTimeoutMs: 1000,
|
|
231
234
|
}).subscribe({
|
|
232
235
|
next: ({ socketEvent, lockedDevice }: GetGenuineCheckFromDeviceIdResult) => {
|
|
@@ -286,6 +289,7 @@ describe("getGenuineCheckFromDeviceId", () => {
|
|
|
286
289
|
let step = 1;
|
|
287
290
|
getGenuineCheckFromDeviceId({
|
|
288
291
|
deviceId: "A_DEVICE_ID",
|
|
292
|
+
deviceName: null,
|
|
289
293
|
lockedDeviceTimeoutMs: 1000,
|
|
290
294
|
}).subscribe({
|
|
291
295
|
next: ({ socketEvent, lockedDevice }: GetGenuineCheckFromDeviceIdResult) => {
|
|
@@ -8,6 +8,7 @@ import genuineCheck from "./genuineCheck";
|
|
|
8
8
|
|
|
9
9
|
export type GetGenuineCheckFromDeviceIdArgs = {
|
|
10
10
|
deviceId: string;
|
|
11
|
+
deviceName: string | null;
|
|
11
12
|
lockedDeviceTimeoutMs?: number;
|
|
12
13
|
};
|
|
13
14
|
|
|
@@ -29,6 +30,7 @@ export type GetGenuineCheckFromDeviceIdOutput = Observable<GetGenuineCheckFromDe
|
|
|
29
30
|
*/
|
|
30
31
|
export const getGenuineCheckFromDeviceId = ({
|
|
31
32
|
deviceId,
|
|
33
|
+
deviceName,
|
|
32
34
|
lockedDeviceTimeoutMs = 1000,
|
|
33
35
|
}: GetGenuineCheckFromDeviceIdArgs): GetGenuineCheckFromDeviceIdOutput => {
|
|
34
36
|
return new Observable(subscriber => {
|
|
@@ -42,7 +44,10 @@ export const getGenuineCheckFromDeviceId = ({
|
|
|
42
44
|
|
|
43
45
|
// Returns a Subscription that can be unsubscribed/cleaned
|
|
44
46
|
return (
|
|
45
|
-
withDevice(
|
|
47
|
+
withDevice(
|
|
48
|
+
deviceId,
|
|
49
|
+
deviceName ? { matchDeviceByName: deviceName } : undefined,
|
|
50
|
+
)(t =>
|
|
46
51
|
from(getDeviceInfo(t)).pipe(
|
|
47
52
|
mergeMap(deviceInfo => {
|
|
48
53
|
clearTimeout(lockedDeviceTimeout);
|
|
@@ -79,6 +79,7 @@ describe("getOnboardingStatePolling", () => {
|
|
|
79
79
|
|
|
80
80
|
getOnboardingStatePolling({
|
|
81
81
|
deviceId: device.deviceId,
|
|
82
|
+
deviceName: null,
|
|
82
83
|
pollingPeriodMs,
|
|
83
84
|
}).subscribe({
|
|
84
85
|
next: value => {
|
|
@@ -107,6 +108,7 @@ describe("getOnboardingStatePolling", () => {
|
|
|
107
108
|
|
|
108
109
|
getOnboardingStatePolling({
|
|
109
110
|
deviceId: device.deviceId,
|
|
111
|
+
deviceName: null,
|
|
110
112
|
pollingPeriodMs,
|
|
111
113
|
}).subscribe({
|
|
112
114
|
next: value => {
|
|
@@ -135,6 +137,7 @@ describe("getOnboardingStatePolling", () => {
|
|
|
135
137
|
|
|
136
138
|
getOnboardingStatePolling({
|
|
137
139
|
deviceId: device.deviceId,
|
|
140
|
+
deviceName: null,
|
|
138
141
|
pollingPeriodMs,
|
|
139
142
|
}).subscribe({
|
|
140
143
|
next: value => {
|
|
@@ -164,6 +167,7 @@ describe("getOnboardingStatePolling", () => {
|
|
|
164
167
|
|
|
165
168
|
getOnboardingStatePolling({
|
|
166
169
|
deviceId: device.deviceId,
|
|
170
|
+
deviceName: null,
|
|
167
171
|
pollingPeriodMs,
|
|
168
172
|
safeGuardTimeoutMs,
|
|
169
173
|
}).subscribe({
|
|
@@ -192,6 +196,7 @@ describe("getOnboardingStatePolling", () => {
|
|
|
192
196
|
|
|
193
197
|
getOnboardingStatePolling({
|
|
194
198
|
deviceId: device.deviceId,
|
|
199
|
+
deviceName: null,
|
|
195
200
|
pollingPeriodMs,
|
|
196
201
|
}).subscribe({
|
|
197
202
|
error: error => {
|
|
@@ -221,6 +226,7 @@ describe("getOnboardingStatePolling", () => {
|
|
|
221
226
|
|
|
222
227
|
onboardingStatePollingSubscription = getOnboardingStatePolling({
|
|
223
228
|
deviceId: device.deviceId,
|
|
229
|
+
deviceName: null,
|
|
224
230
|
pollingPeriodMs,
|
|
225
231
|
}).subscribe({
|
|
226
232
|
next: value => {
|
|
@@ -248,6 +254,7 @@ describe("getOnboardingStatePolling", () => {
|
|
|
248
254
|
|
|
249
255
|
onboardingStatePollingSubscription = getOnboardingStatePolling({
|
|
250
256
|
deviceId: device.deviceId,
|
|
257
|
+
deviceName: null,
|
|
251
258
|
pollingPeriodMs,
|
|
252
259
|
}).subscribe({
|
|
253
260
|
next: value => {
|
|
@@ -281,6 +288,7 @@ describe("getOnboardingStatePolling", () => {
|
|
|
281
288
|
|
|
282
289
|
onboardingStatePollingSubscription = getOnboardingStatePolling({
|
|
283
290
|
deviceId: device.deviceId,
|
|
291
|
+
deviceName: null,
|
|
284
292
|
pollingPeriodMs,
|
|
285
293
|
safeGuardTimeoutMs: pollingPeriodMs * 10,
|
|
286
294
|
}).subscribe({
|
|
@@ -310,6 +318,7 @@ describe("getOnboardingStatePolling", () => {
|
|
|
310
318
|
|
|
311
319
|
onboardingStatePollingSubscription = getOnboardingStatePolling({
|
|
312
320
|
deviceId: device.deviceId,
|
|
321
|
+
deviceName: null,
|
|
313
322
|
pollingPeriodMs,
|
|
314
323
|
}).subscribe({
|
|
315
324
|
next: value => {
|
|
@@ -328,4 +337,29 @@ describe("getOnboardingStatePolling", () => {
|
|
|
328
337
|
jest.advanceTimersByTime(pollingPeriodMs - 1);
|
|
329
338
|
});
|
|
330
339
|
});
|
|
340
|
+
|
|
341
|
+
describe("When deviceName is provided", () => {
|
|
342
|
+
it("should pass deviceName to withDevice", done => {
|
|
343
|
+
mockedGetVersion.mockResolvedValue(aFirmwareInfo);
|
|
344
|
+
mockedExtractOnboardingState.mockReturnValue(anOnboardingState);
|
|
345
|
+
|
|
346
|
+
const device = aDevice;
|
|
347
|
+
|
|
348
|
+
getOnboardingStatePolling({
|
|
349
|
+
deviceId: device.deviceId,
|
|
350
|
+
deviceName: "My Device",
|
|
351
|
+
pollingPeriodMs,
|
|
352
|
+
}).subscribe({
|
|
353
|
+
next: () => {
|
|
354
|
+
expect(mockedWithDevice).toHaveBeenCalledWith(
|
|
355
|
+
device.deviceId,
|
|
356
|
+
expect.objectContaining({ matchDeviceByName: "My Device" }),
|
|
357
|
+
);
|
|
358
|
+
done();
|
|
359
|
+
},
|
|
360
|
+
});
|
|
361
|
+
|
|
362
|
+
jest.advanceTimersByTime(pollingPeriodMs - 1);
|
|
363
|
+
});
|
|
364
|
+
});
|
|
331
365
|
});
|