From 047a9a05e59a9dafa67d52929715c6b75f84767f Mon Sep 17 00:00:00 2001 From: Juan Cortes Ross Date: Thu, 24 Feb 2022 16:08:22 +0100 Subject: [PATCH] LIVE-1469 Handle onboarded devices in device actions --- src/errors.ts | 1 + src/hw/getDeviceInfo.ts | 12 +++++++++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/src/errors.ts b/src/errors.ts index d7d6f81708..b51e92f367 100644 --- a/src/errors.ts +++ b/src/errors.ts @@ -23,6 +23,7 @@ export const LowerThanMinimumRelayFee = createCustomErrorClass( export const TransactionRefusedOnDevice = createCustomErrorClass( "TransactionRefusedOnDevice" ); +export const DeviceNotOnboarded = createCustomErrorClass("DeviceNotOnboarded"); export const InvalidAddressBecauseAlreadyDelegated = createCustomErrorClass( "InvalidAddressBecauseAlreadyDelegated" ); diff --git a/src/hw/getDeviceInfo.ts b/src/hw/getDeviceInfo.ts index 112d0f4288..73576b5d3b 100644 --- a/src/hw/getDeviceInfo.ts +++ b/src/hw/getDeviceInfo.ts @@ -10,6 +10,7 @@ import getAppAndVersion from "./getAppAndVersion"; import type { DeviceInfo } from "../types/manager"; import { PROVIDERS } from "../manager/provider"; import { isDashboardName } from "./isDashboardName"; +import { DeviceNotOnboarded } from "../errors"; const ManagerAllowedFlag = 0x08; const PinValidatedFlag = 0x80; export default async function getDeviceInfo( @@ -37,7 +38,16 @@ export default async function getDeviceInfo( throw new DeviceOnDashboardExpected(); } - const res = await getVersion(transport); + const res = await getVersion(transport).catch((e) => { + if (e instanceof TransportStatusError) { + // @ts-expect-error typescript not checking agains the instanceof + if (e.statusCode === 0x6d06) { + throw new DeviceNotOnboarded(); + } + } + throw e; + }); + const { isBootloader, rawVersion,