@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.
Files changed (276) hide show
  1. package/lib/deviceSDK/actions/getBatteryStatuses.d.ts +2 -1
  2. package/lib/deviceSDK/actions/getBatteryStatuses.d.ts.map +1 -1
  3. package/lib/deviceSDK/actions/getBatteryStatuses.js +2 -2
  4. package/lib/deviceSDK/actions/getBatteryStatuses.js.map +1 -1
  5. package/lib/deviceSDK/actions/getDeviceInfo.d.ts +2 -1
  6. package/lib/deviceSDK/actions/getDeviceInfo.d.ts.map +1 -1
  7. package/lib/deviceSDK/actions/getDeviceInfo.js +2 -2
  8. package/lib/deviceSDK/actions/getDeviceInfo.js.map +1 -1
  9. package/lib/deviceSDK/actions/getLatestAvailableFirmware.d.ts +2 -1
  10. package/lib/deviceSDK/actions/getLatestAvailableFirmware.d.ts.map +1 -1
  11. package/lib/deviceSDK/actions/getLatestAvailableFirmware.js +6 -3
  12. package/lib/deviceSDK/actions/getLatestAvailableFirmware.js.map +1 -1
  13. package/lib/deviceSDK/actions/toggleOnboardingEarlyCheck.d.ts +2 -1
  14. package/lib/deviceSDK/actions/toggleOnboardingEarlyCheck.d.ts.map +1 -1
  15. package/lib/deviceSDK/actions/toggleOnboardingEarlyCheck.js +2 -2
  16. package/lib/deviceSDK/actions/toggleOnboardingEarlyCheck.js.map +1 -1
  17. package/lib/deviceSDK/actions/updateFirmware.d.ts +2 -1
  18. package/lib/deviceSDK/actions/updateFirmware.d.ts.map +1 -1
  19. package/lib/deviceSDK/actions/updateFirmware.js +4 -3
  20. package/lib/deviceSDK/actions/updateFirmware.js.map +1 -1
  21. package/lib/deviceSDK/hooks/useBatteryStatuses.d.ts +2 -1
  22. package/lib/deviceSDK/hooks/useBatteryStatuses.d.ts.map +1 -1
  23. package/lib/deviceSDK/hooks/useBatteryStatuses.js +3 -2
  24. package/lib/deviceSDK/hooks/useBatteryStatuses.js.map +1 -1
  25. package/lib/deviceSDK/hooks/useGetDeviceInfo.d.ts +2 -1
  26. package/lib/deviceSDK/hooks/useGetDeviceInfo.d.ts.map +1 -1
  27. package/lib/deviceSDK/hooks/useGetDeviceInfo.js +3 -3
  28. package/lib/deviceSDK/hooks/useGetDeviceInfo.js.map +1 -1
  29. package/lib/deviceSDK/hooks/useGetLatestAvailableFirmware.d.ts +2 -1
  30. package/lib/deviceSDK/hooks/useGetLatestAvailableFirmware.d.ts.map +1 -1
  31. package/lib/deviceSDK/hooks/useGetLatestAvailableFirmware.js +2 -1
  32. package/lib/deviceSDK/hooks/useGetLatestAvailableFirmware.js.map +1 -1
  33. package/lib/deviceSDK/hooks/useToggleOnboardingEarlyChecks.d.ts +2 -1
  34. package/lib/deviceSDK/hooks/useToggleOnboardingEarlyChecks.d.ts.map +1 -1
  35. package/lib/deviceSDK/hooks/useToggleOnboardingEarlyChecks.js +3 -2
  36. package/lib/deviceSDK/hooks/useToggleOnboardingEarlyChecks.js.map +1 -1
  37. package/lib/deviceSDK/hooks/useUpdateFirmware.d.ts +2 -1
  38. package/lib/deviceSDK/hooks/useUpdateFirmware.d.ts.map +1 -1
  39. package/lib/deviceSDK/hooks/useUpdateFirmware.js +3 -2
  40. package/lib/deviceSDK/hooks/useUpdateFirmware.js.map +1 -1
  41. package/lib/deviceSDK/tasks/getBatteryStatuses.d.ts +1 -0
  42. package/lib/deviceSDK/tasks/getBatteryStatuses.d.ts.map +1 -1
  43. package/lib/deviceSDK/tasks/getBatteryStatuses.js +2 -2
  44. package/lib/deviceSDK/tasks/getBatteryStatuses.js.map +1 -1
  45. package/lib/deviceSDK/tasks/getDeviceInfo.d.ts +2 -1
  46. package/lib/deviceSDK/tasks/getDeviceInfo.d.ts.map +1 -1
  47. package/lib/deviceSDK/tasks/getDeviceInfo.js +2 -2
  48. package/lib/deviceSDK/tasks/getDeviceInfo.js.map +1 -1
  49. package/lib/deviceSDK/tasks/getLatestFirmware.d.ts +1 -0
  50. package/lib/deviceSDK/tasks/getLatestFirmware.d.ts.map +1 -1
  51. package/lib/deviceSDK/tasks/getLatestFirmware.js +2 -2
  52. package/lib/deviceSDK/tasks/getLatestFirmware.js.map +1 -1
  53. package/lib/deviceSDK/tasks/toggleOnboardingEarlyCheck.d.ts +1 -0
  54. package/lib/deviceSDK/tasks/toggleOnboardingEarlyCheck.d.ts.map +1 -1
  55. package/lib/deviceSDK/tasks/toggleOnboardingEarlyCheck.js +2 -2
  56. package/lib/deviceSDK/tasks/toggleOnboardingEarlyCheck.js.map +1 -1
  57. package/lib/deviceSDK/tasks/updateFirmware.d.ts +1 -0
  58. package/lib/deviceSDK/tasks/updateFirmware.d.ts.map +1 -1
  59. package/lib/deviceSDK/tasks/updateFirmware.js +2 -2
  60. package/lib/deviceSDK/tasks/updateFirmware.js.map +1 -1
  61. package/lib/deviceSDK/transports/core.d.ts +1 -0
  62. package/lib/deviceSDK/transports/core.d.ts.map +1 -1
  63. package/lib/deviceSDK/transports/core.js +2 -2
  64. package/lib/deviceSDK/transports/core.js.map +1 -1
  65. package/lib/hw/actions/app.d.ts.map +1 -1
  66. package/lib/hw/actions/app.js +2 -1
  67. package/lib/hw/actions/app.js.map +1 -1
  68. package/lib/hw/actions/customLockScreenLoad.d.ts +1 -1
  69. package/lib/hw/actions/customLockScreenLoad.d.ts.map +1 -1
  70. package/lib/hw/actions/customLockScreenLoad.js +2 -0
  71. package/lib/hw/actions/customLockScreenLoad.js.map +1 -1
  72. package/lib/hw/actions/implementations.d.ts +1 -0
  73. package/lib/hw/actions/implementations.d.ts.map +1 -1
  74. package/lib/hw/actions/implementations.js +12 -2
  75. package/lib/hw/actions/implementations.js.map +1 -1
  76. package/lib/hw/connectApp.d.ts +2 -1
  77. package/lib/hw/connectApp.d.ts.map +1 -1
  78. package/lib/hw/connectApp.js +4 -4
  79. package/lib/hw/connectApp.js.map +1 -1
  80. package/lib/hw/connectManager.d.ts +2 -1
  81. package/lib/hw/connectManager.d.ts.map +1 -1
  82. package/lib/hw/connectManager.js +4 -4
  83. package/lib/hw/connectManager.js.map +1 -1
  84. package/lib/hw/customLockScreenFetch.d.ts +2 -1
  85. package/lib/hw/customLockScreenFetch.d.ts.map +1 -1
  86. package/lib/hw/customLockScreenFetch.js +2 -2
  87. package/lib/hw/customLockScreenFetch.js.map +1 -1
  88. package/lib/hw/customLockScreenLoad.d.ts +2 -1
  89. package/lib/hw/customLockScreenLoad.d.ts.map +1 -1
  90. package/lib/hw/customLockScreenLoad.js +2 -2
  91. package/lib/hw/customLockScreenLoad.js.map +1 -1
  92. package/lib/hw/deviceAccess.d.ts +3 -3
  93. package/lib/hw/deviceAccess.d.ts.map +1 -1
  94. package/lib/hw/deviceAccess.js +2 -1
  95. package/lib/hw/deviceAccess.js.map +1 -1
  96. package/lib/hw/getGenuineCheckFromDeviceId.d.ts +2 -1
  97. package/lib/hw/getGenuineCheckFromDeviceId.d.ts.map +1 -1
  98. package/lib/hw/getGenuineCheckFromDeviceId.js +2 -2
  99. package/lib/hw/getGenuineCheckFromDeviceId.js.map +1 -1
  100. package/lib/hw/getOnboardingStatePolling.d.ts +2 -1
  101. package/lib/hw/getOnboardingStatePolling.d.ts.map +1 -1
  102. package/lib/hw/getOnboardingStatePolling.js +5 -2
  103. package/lib/hw/getOnboardingStatePolling.js.map +1 -1
  104. package/lib/hw/hooks/useGenuineCheck.d.ts +2 -1
  105. package/lib/hw/hooks/useGenuineCheck.d.ts.map +1 -1
  106. package/lib/hw/hooks/useGenuineCheck.js +3 -1
  107. package/lib/hw/hooks/useGenuineCheck.js.map +1 -1
  108. package/lib/hw/index.d.ts +6 -2
  109. package/lib/hw/index.d.ts.map +1 -1
  110. package/lib/hw/index.js +6 -6
  111. package/lib/hw/index.js.map +1 -1
  112. package/lib/hw/installLanguage.d.ts +2 -1
  113. package/lib/hw/installLanguage.d.ts.map +1 -1
  114. package/lib/hw/installLanguage.js +2 -2
  115. package/lib/hw/installLanguage.js.map +1 -1
  116. package/lib/onboarding/hooks/useOnboardingStatePolling.d.ts.map +1 -1
  117. package/lib/onboarding/hooks/useOnboardingStatePolling.js +1 -0
  118. package/lib/onboarding/hooks/useOnboardingStatePolling.js.map +1 -1
  119. package/lib-es/deviceSDK/actions/getBatteryStatuses.d.ts +2 -1
  120. package/lib-es/deviceSDK/actions/getBatteryStatuses.d.ts.map +1 -1
  121. package/lib-es/deviceSDK/actions/getBatteryStatuses.js +2 -2
  122. package/lib-es/deviceSDK/actions/getBatteryStatuses.js.map +1 -1
  123. package/lib-es/deviceSDK/actions/getDeviceInfo.d.ts +2 -1
  124. package/lib-es/deviceSDK/actions/getDeviceInfo.d.ts.map +1 -1
  125. package/lib-es/deviceSDK/actions/getDeviceInfo.js +2 -2
  126. package/lib-es/deviceSDK/actions/getDeviceInfo.js.map +1 -1
  127. package/lib-es/deviceSDK/actions/getLatestAvailableFirmware.d.ts +2 -1
  128. package/lib-es/deviceSDK/actions/getLatestAvailableFirmware.d.ts.map +1 -1
  129. package/lib-es/deviceSDK/actions/getLatestAvailableFirmware.js +6 -3
  130. package/lib-es/deviceSDK/actions/getLatestAvailableFirmware.js.map +1 -1
  131. package/lib-es/deviceSDK/actions/toggleOnboardingEarlyCheck.d.ts +2 -1
  132. package/lib-es/deviceSDK/actions/toggleOnboardingEarlyCheck.d.ts.map +1 -1
  133. package/lib-es/deviceSDK/actions/toggleOnboardingEarlyCheck.js +2 -2
  134. package/lib-es/deviceSDK/actions/toggleOnboardingEarlyCheck.js.map +1 -1
  135. package/lib-es/deviceSDK/actions/updateFirmware.d.ts +2 -1
  136. package/lib-es/deviceSDK/actions/updateFirmware.d.ts.map +1 -1
  137. package/lib-es/deviceSDK/actions/updateFirmware.js +4 -3
  138. package/lib-es/deviceSDK/actions/updateFirmware.js.map +1 -1
  139. package/lib-es/deviceSDK/hooks/useBatteryStatuses.d.ts +2 -1
  140. package/lib-es/deviceSDK/hooks/useBatteryStatuses.d.ts.map +1 -1
  141. package/lib-es/deviceSDK/hooks/useBatteryStatuses.js +3 -2
  142. package/lib-es/deviceSDK/hooks/useBatteryStatuses.js.map +1 -1
  143. package/lib-es/deviceSDK/hooks/useGetDeviceInfo.d.ts +2 -1
  144. package/lib-es/deviceSDK/hooks/useGetDeviceInfo.d.ts.map +1 -1
  145. package/lib-es/deviceSDK/hooks/useGetDeviceInfo.js +3 -3
  146. package/lib-es/deviceSDK/hooks/useGetDeviceInfo.js.map +1 -1
  147. package/lib-es/deviceSDK/hooks/useGetLatestAvailableFirmware.d.ts +2 -1
  148. package/lib-es/deviceSDK/hooks/useGetLatestAvailableFirmware.d.ts.map +1 -1
  149. package/lib-es/deviceSDK/hooks/useGetLatestAvailableFirmware.js +2 -1
  150. package/lib-es/deviceSDK/hooks/useGetLatestAvailableFirmware.js.map +1 -1
  151. package/lib-es/deviceSDK/hooks/useToggleOnboardingEarlyChecks.d.ts +2 -1
  152. package/lib-es/deviceSDK/hooks/useToggleOnboardingEarlyChecks.d.ts.map +1 -1
  153. package/lib-es/deviceSDK/hooks/useToggleOnboardingEarlyChecks.js +3 -2
  154. package/lib-es/deviceSDK/hooks/useToggleOnboardingEarlyChecks.js.map +1 -1
  155. package/lib-es/deviceSDK/hooks/useUpdateFirmware.d.ts +2 -1
  156. package/lib-es/deviceSDK/hooks/useUpdateFirmware.d.ts.map +1 -1
  157. package/lib-es/deviceSDK/hooks/useUpdateFirmware.js +3 -2
  158. package/lib-es/deviceSDK/hooks/useUpdateFirmware.js.map +1 -1
  159. package/lib-es/deviceSDK/tasks/getBatteryStatuses.d.ts +1 -0
  160. package/lib-es/deviceSDK/tasks/getBatteryStatuses.d.ts.map +1 -1
  161. package/lib-es/deviceSDK/tasks/getBatteryStatuses.js +2 -2
  162. package/lib-es/deviceSDK/tasks/getBatteryStatuses.js.map +1 -1
  163. package/lib-es/deviceSDK/tasks/getDeviceInfo.d.ts +2 -1
  164. package/lib-es/deviceSDK/tasks/getDeviceInfo.d.ts.map +1 -1
  165. package/lib-es/deviceSDK/tasks/getDeviceInfo.js +2 -2
  166. package/lib-es/deviceSDK/tasks/getDeviceInfo.js.map +1 -1
  167. package/lib-es/deviceSDK/tasks/getLatestFirmware.d.ts +1 -0
  168. package/lib-es/deviceSDK/tasks/getLatestFirmware.d.ts.map +1 -1
  169. package/lib-es/deviceSDK/tasks/getLatestFirmware.js +2 -2
  170. package/lib-es/deviceSDK/tasks/getLatestFirmware.js.map +1 -1
  171. package/lib-es/deviceSDK/tasks/toggleOnboardingEarlyCheck.d.ts +1 -0
  172. package/lib-es/deviceSDK/tasks/toggleOnboardingEarlyCheck.d.ts.map +1 -1
  173. package/lib-es/deviceSDK/tasks/toggleOnboardingEarlyCheck.js +2 -2
  174. package/lib-es/deviceSDK/tasks/toggleOnboardingEarlyCheck.js.map +1 -1
  175. package/lib-es/deviceSDK/tasks/updateFirmware.d.ts +1 -0
  176. package/lib-es/deviceSDK/tasks/updateFirmware.d.ts.map +1 -1
  177. package/lib-es/deviceSDK/tasks/updateFirmware.js +2 -2
  178. package/lib-es/deviceSDK/tasks/updateFirmware.js.map +1 -1
  179. package/lib-es/deviceSDK/transports/core.d.ts +1 -0
  180. package/lib-es/deviceSDK/transports/core.d.ts.map +1 -1
  181. package/lib-es/deviceSDK/transports/core.js +2 -2
  182. package/lib-es/deviceSDK/transports/core.js.map +1 -1
  183. package/lib-es/hw/actions/app.d.ts.map +1 -1
  184. package/lib-es/hw/actions/app.js +2 -1
  185. package/lib-es/hw/actions/app.js.map +1 -1
  186. package/lib-es/hw/actions/customLockScreenLoad.d.ts +1 -1
  187. package/lib-es/hw/actions/customLockScreenLoad.d.ts.map +1 -1
  188. package/lib-es/hw/actions/customLockScreenLoad.js +2 -0
  189. package/lib-es/hw/actions/customLockScreenLoad.js.map +1 -1
  190. package/lib-es/hw/actions/implementations.d.ts +1 -0
  191. package/lib-es/hw/actions/implementations.d.ts.map +1 -1
  192. package/lib-es/hw/actions/implementations.js +12 -2
  193. package/lib-es/hw/actions/implementations.js.map +1 -1
  194. package/lib-es/hw/connectApp.d.ts +2 -1
  195. package/lib-es/hw/connectApp.d.ts.map +1 -1
  196. package/lib-es/hw/connectApp.js +4 -4
  197. package/lib-es/hw/connectApp.js.map +1 -1
  198. package/lib-es/hw/connectManager.d.ts +2 -1
  199. package/lib-es/hw/connectManager.d.ts.map +1 -1
  200. package/lib-es/hw/connectManager.js +4 -4
  201. package/lib-es/hw/connectManager.js.map +1 -1
  202. package/lib-es/hw/customLockScreenFetch.d.ts +2 -1
  203. package/lib-es/hw/customLockScreenFetch.d.ts.map +1 -1
  204. package/lib-es/hw/customLockScreenFetch.js +2 -2
  205. package/lib-es/hw/customLockScreenFetch.js.map +1 -1
  206. package/lib-es/hw/customLockScreenLoad.d.ts +2 -1
  207. package/lib-es/hw/customLockScreenLoad.d.ts.map +1 -1
  208. package/lib-es/hw/customLockScreenLoad.js +2 -2
  209. package/lib-es/hw/customLockScreenLoad.js.map +1 -1
  210. package/lib-es/hw/deviceAccess.d.ts +3 -3
  211. package/lib-es/hw/deviceAccess.d.ts.map +1 -1
  212. package/lib-es/hw/deviceAccess.js +2 -1
  213. package/lib-es/hw/deviceAccess.js.map +1 -1
  214. package/lib-es/hw/getGenuineCheckFromDeviceId.d.ts +2 -1
  215. package/lib-es/hw/getGenuineCheckFromDeviceId.d.ts.map +1 -1
  216. package/lib-es/hw/getGenuineCheckFromDeviceId.js +2 -2
  217. package/lib-es/hw/getGenuineCheckFromDeviceId.js.map +1 -1
  218. package/lib-es/hw/getOnboardingStatePolling.d.ts +2 -1
  219. package/lib-es/hw/getOnboardingStatePolling.d.ts.map +1 -1
  220. package/lib-es/hw/getOnboardingStatePolling.js +5 -2
  221. package/lib-es/hw/getOnboardingStatePolling.js.map +1 -1
  222. package/lib-es/hw/hooks/useGenuineCheck.d.ts +2 -1
  223. package/lib-es/hw/hooks/useGenuineCheck.d.ts.map +1 -1
  224. package/lib-es/hw/hooks/useGenuineCheck.js +3 -1
  225. package/lib-es/hw/hooks/useGenuineCheck.js.map +1 -1
  226. package/lib-es/hw/index.d.ts +6 -2
  227. package/lib-es/hw/index.d.ts.map +1 -1
  228. package/lib-es/hw/index.js +6 -6
  229. package/lib-es/hw/index.js.map +1 -1
  230. package/lib-es/hw/installLanguage.d.ts +2 -1
  231. package/lib-es/hw/installLanguage.d.ts.map +1 -1
  232. package/lib-es/hw/installLanguage.js +2 -2
  233. package/lib-es/hw/installLanguage.js.map +1 -1
  234. package/lib-es/onboarding/hooks/useOnboardingStatePolling.d.ts.map +1 -1
  235. package/lib-es/onboarding/hooks/useOnboardingStatePolling.js +1 -0
  236. package/lib-es/onboarding/hooks/useOnboardingStatePolling.js.map +1 -1
  237. package/package.json +4 -4
  238. package/src/deviceSDK/actions/getBatteryStatuses.ts +3 -1
  239. package/src/deviceSDK/actions/getDeviceInfo.ts +3 -2
  240. package/src/deviceSDK/actions/getLatestAvailableFirmware.test.ts +31 -0
  241. package/src/deviceSDK/actions/getLatestAvailableFirmware.ts +7 -2
  242. package/src/deviceSDK/actions/toggleOnboardingEarlyCheck.ts +3 -1
  243. package/src/deviceSDK/actions/updateFirmware.ts +5 -2
  244. package/src/deviceSDK/hooks/useBatteryStatuses.test.ts +1 -1
  245. package/src/deviceSDK/hooks/useBatteryStatuses.ts +4 -1
  246. package/src/deviceSDK/hooks/useGetDeviceInfo.ts +4 -2
  247. package/src/deviceSDK/hooks/useGetLatestAvailableFirmware.ts +3 -0
  248. package/src/deviceSDK/hooks/useToggleOnboardingEarlyChecks.test.ts +2 -0
  249. package/src/deviceSDK/hooks/useToggleOnboardingEarlyChecks.ts +4 -1
  250. package/src/deviceSDK/hooks/useUpdateFirmware.ts +4 -1
  251. package/src/deviceSDK/tasks/getBatteryStatuses.ts +6 -1
  252. package/src/deviceSDK/tasks/getDeviceInfo.ts +6 -2
  253. package/src/deviceSDK/tasks/getLatestFirmware.ts +6 -1
  254. package/src/deviceSDK/tasks/toggleOnboardingEarlyCheck.test.ts +3 -0
  255. package/src/deviceSDK/tasks/toggleOnboardingEarlyCheck.ts +6 -1
  256. package/src/deviceSDK/tasks/updateFirmware.ts +6 -1
  257. package/src/deviceSDK/transports/core.ts +6 -3
  258. package/src/hw/actions/app.ts +2 -1
  259. package/src/hw/actions/customLockScreenLoad.ts +6 -2
  260. package/src/hw/actions/implementations.ts +17 -3
  261. package/src/hw/connectApp.ts +12 -5
  262. package/src/hw/connectManager.ts +13 -6
  263. package/src/hw/customLockScreenFetch.ts +10 -2
  264. package/src/hw/customLockScreenLoad.test.ts +28 -3
  265. package/src/hw/customLockScreenLoad.ts +10 -2
  266. package/src/hw/deviceAccess.ts +4 -3
  267. package/src/hw/getGenuineCheckFromDeviceId.test.ts +4 -0
  268. package/src/hw/getGenuineCheckFromDeviceId.ts +6 -1
  269. package/src/hw/getOnboardingStatePolling.test.ts +34 -0
  270. package/src/hw/getOnboardingStatePolling.ts +6 -3
  271. package/src/hw/hooks/useGenuineCheck.test.ts +37 -0
  272. package/src/hw/hooks/useGenuineCheck.ts +4 -0
  273. package/src/hw/index.test.ts +27 -6
  274. package/src/hw/index.ts +15 -8
  275. package/src/hw/installLanguage.ts +6 -1
  276. 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(deviceId)(({ transportRef }) =>
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(deviceId)(({ transportRef }) =>
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(deviceId)(transport =>
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(deviceId)(({ transportRef }) =>
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(deviceId)(({ transportRef }) =>
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 = (deviceId: string, options?: { openTimeoutMs?: number }) => {
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?.openTimeoutMs, tracer.getContext()))
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?.openTimeoutMs, tracer.getContext());
182
+ return open(deviceId, options, tracer.getContext());
180
183
  })
181
184
  .then(transport => {
182
185
  return buildRefreshableTransport(transport);
@@ -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 = (device: Device | null | undefined, request: LoadImageRequest): ActionState => {
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: { deviceId: string; request: Request }) => Observable<EmittedEvents>;
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({ deviceId: currentDevice.deviceId, request }),
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
- !device ? EMPTY : task({ deviceId: device.deviceId, request }),
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) =>
@@ -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(deviceId)(transport => cmd(transport, { deviceId, request }));
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(deviceId)(transport => {
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({
@@ -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(deviceId)(transport => cmd(transport, { deviceId, request }));
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(deviceId)(transport => {
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({ deviceId, request }: Input): Observable<FetchImageEvent> {
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(deviceId)(
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: () => callback => callback({ transportRef: { current: mockTransport } }),
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(await customLockScreenLoad({ deviceId: "deviceId", request }));
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(await customLockScreenLoad({ deviceId: "nanoX", request }));
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({ deviceId, request }: Input): Observable<LoadImageEvent> {
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(deviceId)(
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" })
@@ -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?: { openTimeoutMs?: number }) =>
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?.openTimeoutMs, tracer.getContext());
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(deviceId)(t =>
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
  });