diff --git a/.storybook/webpack.config.js b/.storybook/webpack.config.js index 62f80fb7..9cf5cca1 100644 --- a/.storybook/webpack.config.js +++ b/.storybook/webpack.config.js @@ -10,4 +10,7 @@ module.exports = { }, ], }, + node: { + fs: 'empty', + }, } diff --git a/package.json b/package.json index cd33e8b6..71a034c2 100644 --- a/package.json +++ b/package.json @@ -41,7 +41,7 @@ "@ledgerhq/hw-transport": "^4.32.0", "@ledgerhq/hw-transport-node-hid": "^4.32.0", "@ledgerhq/ledger-core": "2.0.0-rc.14", - "@ledgerhq/live-common": "4.8.0-beta.24", + "@ledgerhq/live-common": "4.12.0", "animated": "^0.2.2", "async": "^2.6.1", "axios": "^0.18.0", @@ -185,7 +185,7 @@ "yaml-loader": "^0.5.0" }, "engines": { - "node": ">=8.9.0 <=8.14.0", + "node": ">=8.9.0 <=8.15.0", "yarn": "^1.10.1" }, "private": true diff --git a/src/api/Ethereum.js b/src/api/Ethereum.js index 4542ddb6..bd7b2160 100644 --- a/src/api/Ethereum.js +++ b/src/api/Ethereum.js @@ -1,7 +1,7 @@ // @flow import type { CryptoCurrency } from '@ledgerhq/live-common/lib/types' import { BigNumber } from 'bignumber.js' -import { LedgerAPINotAvailable } from '@ledgerhq/live-common/lib/errors' +import { LedgerAPINotAvailable } from '@ledgerhq/errors' import network from './network' import { blockchainBaseURL } from './Ledger' diff --git a/src/api/Fees.js b/src/api/Fees.js index 476ea5d0..84623f88 100644 --- a/src/api/Fees.js +++ b/src/api/Fees.js @@ -2,7 +2,7 @@ import invariant from 'invariant' import LRU from 'lru-cache' import type { Currency } from '@ledgerhq/live-common/lib/types' -import { FeeEstimationFailed } from '@ledgerhq/live-common/lib/errors' +import { FeeEstimationFailed } from '@ledgerhq/errors' import { blockchainBaseURL } from './Ledger' import network from './network' diff --git a/src/api/network.js b/src/api/network.js index db0a3e5d..66504be2 100644 --- a/src/api/network.js +++ b/src/api/network.js @@ -3,11 +3,7 @@ import axios from 'axios' import { GET_CALLS_RETRY, GET_CALLS_TIMEOUT } from 'config/constants' import { retry } from 'helpers/promise' import logger from 'logger' -import { - LedgerAPIErrorWithMessage, - LedgerAPIError, - NetworkDown, -} from '@ledgerhq/live-common/lib/errors' +import { LedgerAPIErrorWithMessage, LedgerAPIError, NetworkDown } from '@ledgerhq/errors' import anonymizer from 'helpers/anonymizer' const userFriendlyError = (p: Promise, { url, method, startTime, ...rest }): Promise => diff --git a/src/bridge/EthereumJSBridge.js b/src/bridge/EthereumJSBridge.js index a337dd85..1eeeca8f 100644 --- a/src/bridge/EthereumJSBridge.js +++ b/src/bridge/EthereumJSBridge.js @@ -25,7 +25,7 @@ import { apiForCurrency } from 'api/Ethereum' import type { Tx } from 'api/Ethereum' import getAddressCommand from 'commands/getAddress' import signTransactionCommand from 'commands/signTransaction' -import { NotEnoughBalance, FeeNotLoaded, ETHAddressNonEIP } from '@ledgerhq/live-common/lib/errors' +import { NotEnoughBalance, FeeNotLoaded, ETHAddressNonEIP } from '@ledgerhq/errors' import type { EditProps, WalletBridge } from './types' type Transaction = { diff --git a/src/bridge/LibcoreBridge.js b/src/bridge/LibcoreBridge.js index 16d52909..e9d2ce8b 100644 --- a/src/bridge/LibcoreBridge.js +++ b/src/bridge/LibcoreBridge.js @@ -11,7 +11,7 @@ import libcoreSyncAccount from 'commands/libcoreSyncAccount' import libcoreSignAndBroadcast from 'commands/libcoreSignAndBroadcast' import libcoreGetFees, { extractGetFeesInputFromAccount } from 'commands/libcoreGetFees' import libcoreValidAddress from 'commands/libcoreValidAddress' -import { NotEnoughBalance, FeeNotLoaded } from '@ledgerhq/live-common/lib/errors' +import { NotEnoughBalance, FeeNotLoaded } from '@ledgerhq/errors' import type { WalletBridge, EditProps } from './types' const NOT_ENOUGH_FUNDS = 52 diff --git a/src/bridge/RippleJSBridge.js b/src/bridge/RippleJSBridge.js index c67a5a94..88f83531 100644 --- a/src/bridge/RippleJSBridge.js +++ b/src/bridge/RippleJSBridge.js @@ -32,7 +32,7 @@ import { NotEnoughBalance, FeeNotLoaded, NotEnoughBalanceBecauseDestinationNotCreated, -} from '@ledgerhq/live-common/lib/errors' +} from '@ledgerhq/errors' import type { WalletBridge, EditProps } from './types' type Transaction = { diff --git a/src/commands/firmwareRepair.js b/src/commands/firmwareRepair.js index 64009722..d990fb4b 100644 --- a/src/commands/firmwareRepair.js +++ b/src/commands/firmwareRepair.js @@ -3,12 +3,15 @@ import repair from '@ledgerhq/live-common/lib/hw/firmwareUpdate-repair' import { createCommand, Command } from 'helpers/ipc' -type Input = void +type Input = { + version: ?string, +} + type Result = { progress: number } const cmd: Command = createCommand( 'firmwareRepair', - () => repair(''), // devicePath='' HACK to not depend on a devicePath because it's dynamic + ({ version }) => repair('', version), // devicePath='' HACK to not depend on a devicePath because it's dynamic ) export default cmd diff --git a/src/commands/libcoreGetFees.js b/src/commands/libcoreGetFees.js index faebcdd0..fcedd03d 100644 --- a/src/commands/libcoreGetFees.js +++ b/src/commands/libcoreGetFees.js @@ -13,7 +13,7 @@ import { bigNumberToLibcoreAmount, getOrCreateWallet, } from 'helpers/libcore' -import { InvalidAddress } from '@ledgerhq/live-common/lib/errors' +import { InvalidAddress } from '@ledgerhq/errors' type BitcoinLikeTransaction = { // TODO we rename this Transaction concept into transactionInput diff --git a/src/commands/libcoreSignAndBroadcast.js b/src/commands/libcoreSignAndBroadcast.js index 30dd27ab..b683a58b 100644 --- a/src/commands/libcoreSignAndBroadcast.js +++ b/src/commands/libcoreSignAndBroadcast.js @@ -14,7 +14,7 @@ import { bigNumberToLibcoreAmount, getOrCreateWallet, } from 'helpers/libcore' -import { UpdateYourApp } from '@ledgerhq/live-common/lib/errors' +import { UpdateYourApp } from '@ledgerhq/errors' import withLibcore from 'helpers/withLibcore' import { createCommand, Command } from 'helpers/ipc' diff --git a/src/components/EnsureDeviceApp.js b/src/components/EnsureDeviceApp.js index 47f90e79..623166a9 100644 --- a/src/components/EnsureDeviceApp.js +++ b/src/components/EnsureDeviceApp.js @@ -23,11 +23,7 @@ import IconUsb from 'icons/Usb' import type { Device } from 'types/common' -import { - WrongDeviceForAccount, - CantOpenDevice, - UpdateYourApp, -} from '@ledgerhq/live-common/lib/errors' +import { WrongDeviceForAccount, CantOpenDevice, UpdateYourApp } from '@ledgerhq/errors' import { getCurrentDevice } from 'reducers/devices' const usbIcon = diff --git a/src/components/FeesField/BitcoinKind.js b/src/components/FeesField/BitcoinKind.js index 81c2ea9b..937e0702 100644 --- a/src/components/FeesField/BitcoinKind.js +++ b/src/components/FeesField/BitcoinKind.js @@ -8,7 +8,7 @@ import { translate } from 'react-i18next' import type { T } from 'types/common' -import { FeeNotLoaded } from '@ledgerhq/live-common/lib/errors' +import { FeeNotLoaded } from '@ledgerhq/errors' import InputCurrency from 'components/base/InputCurrency' import Select from 'components/base/Select' import type { Fees } from 'api/Fees' diff --git a/src/components/FeesField/EthereumKind.js b/src/components/FeesField/EthereumKind.js index aa02c86a..d6ef3d6d 100644 --- a/src/components/FeesField/EthereumKind.js +++ b/src/components/FeesField/EthereumKind.js @@ -4,7 +4,7 @@ import React, { Component } from 'react' import { BigNumber } from 'bignumber.js' import type { Account } from '@ledgerhq/live-common/lib/types' -import { FeeNotLoaded } from '@ledgerhq/live-common/lib/errors' +import { FeeNotLoaded } from '@ledgerhq/errors' import InputCurrency from 'components/base/InputCurrency' import type { Fees } from 'api/Fees' import WithFeesAPI from '../WithFeesAPI' diff --git a/src/components/FeesField/RippleKind.js b/src/components/FeesField/RippleKind.js index 8692cb12..acf7622e 100644 --- a/src/components/FeesField/RippleKind.js +++ b/src/components/FeesField/RippleKind.js @@ -4,7 +4,7 @@ import React, { Component } from 'react' import type { BigNumber } from 'bignumber.js' import type { Account } from '@ledgerhq/live-common/lib/types' import { apiForEndpointConfig, parseAPIValue } from 'api/Ripple' -import { FeeNotLoaded } from '@ledgerhq/live-common/lib/errors' +import { FeeNotLoaded } from '@ledgerhq/errors' import InputCurrency from 'components/base/InputCurrency' import GenericContainer from './GenericContainer' diff --git a/src/components/GenuineCheck.js b/src/components/GenuineCheck.js index 09107831..d3487591 100644 --- a/src/components/GenuineCheck.js +++ b/src/components/GenuineCheck.js @@ -20,7 +20,7 @@ import { DeviceNotGenuineError, DeviceGenuineSocketEarlyClose, UnexpectedBootloader, -} from '@ledgerhq/live-common/lib/errors' +} from '@ledgerhq/errors' import getDeviceInfo from 'commands/getDeviceInfo' import getIsGenuine from 'commands/getIsGenuine' @@ -156,10 +156,10 @@ class GenuineCheck extends PureComponent { { id: 'deviceInfo', title: ( - + {'Navigate to the '} {'dashboard'} - {' app on your device'} + {' on your device'} ), icon: homeIcon, diff --git a/src/components/IsUnlocked.js b/src/components/IsUnlocked.js index 391599db..997ee69f 100644 --- a/src/components/IsUnlocked.js +++ b/src/components/IsUnlocked.js @@ -17,7 +17,7 @@ import { hardReset } from 'helpers/reset' import { fetchAccounts } from 'actions/accounts' import { isLocked, unlock } from 'reducers/application' -import { PasswordIncorrectError } from '@ledgerhq/live-common/lib/errors' +import { PasswordIncorrectError } from '@ledgerhq/errors' import Box from 'components/base/Box' import InputPassword from 'components/base/InputPassword' diff --git a/src/components/SelectCurrency/index.js b/src/components/SelectCurrency/index.js index 0ba3bab4..97823765 100644 --- a/src/components/SelectCurrency/index.js +++ b/src/components/SelectCurrency/index.js @@ -18,6 +18,7 @@ type OwnProps = { currencies?: CryptoCurrency[], value?: CryptoCurrency, placeholder: string, + autoFocus?: boolean, t: T, } @@ -29,12 +30,21 @@ const mapStateToProps = (state, props: OwnProps) => ({ currencies: props.currencies || availableCurrencies(state), }) -const SelectCurrency = ({ onChange, value, t, placeholder, currencies, ...props }: Props) => { +const SelectCurrency = ({ + onChange, + value, + t, + placeholder, + currencies, + autoFocus, + ...props +}: Props) => { const options = currencies ? currencies.map(c => ({ ...c, value: c.id, label: c.name, currency: c })) : [] return ( + + ) : null} + {!isLoading ? ( - + {error ? : null} {error ? null : ( - + <> + + )} ) : null} diff --git a/src/components/base/Select/index.js b/src/components/base/Select/index.js index 3551b4dc..ec8b8587 100644 --- a/src/components/base/Select/index.js +++ b/src/components/base/Select/index.js @@ -28,6 +28,7 @@ type Props = { small: boolean, width: number, minWidth: number, + autoFocus: boolean, } export type Option = { @@ -37,6 +38,19 @@ export type Option = { } class Select extends PureComponent { + componentDidMount() { + if (this.ref && this.props.autoFocus) { + // $FlowFixMe + this.timeout = requestAnimationFrame(() => this.ref.focus()) + } + } + + componentWillUnmount() { + if (this.timeout) { + cancelAnimationFrame(this.timeout) + } + } + handleChange = (value, { action }) => { const { onChange } = this.props if (action === 'select-option') { @@ -47,6 +61,9 @@ class Select extends PureComponent { } } + ref: * + timeout: * + render() { const { value, @@ -68,6 +85,7 @@ class Select extends PureComponent { return ( (this.ref = c)} value={value} maxMenuHeight={300} classNamePrefix="select" diff --git a/src/components/modals/AccountSettingRenderBody.js b/src/components/modals/AccountSettingRenderBody.js index 0575d4c1..eb1e1d0d 100644 --- a/src/components/modals/AccountSettingRenderBody.js +++ b/src/components/modals/AccountSettingRenderBody.js @@ -17,7 +17,7 @@ import { setDataModal } from 'reducers/modals' import { getBridgeForCurrency } from 'bridge' -import { AccountNameRequiredError, EnpointConfigError } from '@ledgerhq/live-common/lib/errors' +import { AccountNameRequiredError, EnpointConfigError } from '@ledgerhq/errors' import TrackPage from 'analytics/TrackPage' import Spoiler from 'components/base/Spoiler' diff --git a/src/components/modals/Receive/steps/04-step-receive-funds.js b/src/components/modals/Receive/steps/04-step-receive-funds.js index 45cd33e1..fc58c10a 100644 --- a/src/components/modals/Receive/steps/04-step-receive-funds.js +++ b/src/components/modals/Receive/steps/04-step-receive-funds.js @@ -7,7 +7,7 @@ import TrackPage from 'analytics/TrackPage' import getAddress from 'commands/getAddress' import Box from 'components/base/Box' import CurrentAddressForAccount from 'components/CurrentAddressForAccount' -import { DisconnectedDevice, WrongDeviceForAccount } from '@ledgerhq/live-common/lib/errors' +import { DisconnectedDevice, WrongDeviceForAccount } from '@ledgerhq/errors' import type { StepProps } from '..' diff --git a/src/components/modals/Send/fields/RecipientField.js b/src/components/modals/Send/fields/RecipientField.js index c4e9f92e..c2611d68 100644 --- a/src/components/modals/Send/fields/RecipientField.js +++ b/src/components/modals/Send/fields/RecipientField.js @@ -9,8 +9,8 @@ import Box from 'components/base/Box' import LabelWithExternalIcon from 'components/base/LabelWithExternalIcon' import RecipientAddress from 'components/RecipientAddress' import { track } from 'analytics/segment' -import { createCustomErrorClass } from '@ledgerhq/live-common/lib/errors/helpers' -import { CantScanQRCode } from '@ledgerhq/live-common/lib/errors' +import { createCustomErrorClass } from '@ledgerhq/errors/lib/helpers' +import { CantScanQRCode } from '@ledgerhq/errors' type Props = { t: T, diff --git a/src/components/modals/Send/index.js b/src/components/modals/Send/index.js index 17801759..090ca4b0 100644 --- a/src/components/modals/Send/index.js +++ b/src/components/modals/Send/index.js @@ -20,7 +20,7 @@ import type { StepProps as DefaultStepProps } from 'components/base/Stepper' import { getCurrentDevice } from 'reducers/devices' import { accountsSelector } from 'reducers/accounts' import { closeModal, openModal } from 'reducers/modals' -import { DisconnectedDevice, UserRefusedOnDevice } from '@ledgerhq/live-common/lib/errors' +import { DisconnectedDevice, UserRefusedOnDevice } from '@ledgerhq/errors' import Modal from 'components/base/Modal' import Stepper from 'components/base/Stepper' diff --git a/src/helpers/db/index.js b/src/helpers/db/index.js index f1e2d533..fa810e9a 100644 --- a/src/helpers/db/index.js +++ b/src/helpers/db/index.js @@ -11,7 +11,7 @@ import logger from 'logger' import { fsReadFile, fsUnlink } from 'helpers/fs' import { promisify, debounce } from 'helpers/promise' -import { NoDBPathGiven, DBWrongPassword } from '@ledgerhq/live-common/lib/errors' +import { NoDBPathGiven, DBWrongPassword } from '@ledgerhq/errors' type Transform = { get: any => any, diff --git a/src/helpers/init-libcore.js b/src/helpers/init-libcore.js index b9877a78..b9ce44d4 100644 --- a/src/helpers/init-libcore.js +++ b/src/helpers/init-libcore.js @@ -3,7 +3,7 @@ import logger from 'logger' import invariant from 'invariant' import network from 'api/network' -import { serializeError } from '@ledgerhq/live-common/lib/errors/helpers' +import { serializeError } from '@ledgerhq/errors/lib/helpers' const lib = require('@ledgerhq/ledger-core') diff --git a/src/helpers/ipc.js b/src/helpers/ipc.js index 6a1166c9..6f3847f1 100644 --- a/src/helpers/ipc.js +++ b/src/helpers/ipc.js @@ -2,7 +2,7 @@ import logger from 'logger' import { Observable } from 'rxjs' import uuidv4 from 'uuid/v4' -import { deserializeError } from '@ledgerhq/live-common/lib/errors/helpers' +import { deserializeError } from '@ledgerhq/errors/lib/helpers' export function createCommand(id: string, impl: In => Observable): Command { return new Command(id, impl) diff --git a/src/helpers/libcore.js b/src/helpers/libcore.js index 4f3447df..6e05e7fb 100644 --- a/src/helpers/libcore.js +++ b/src/helpers/libcore.js @@ -32,8 +32,8 @@ import type { } from '@ledgerhq/live-common/lib/types' import type { NJSAccount, NJSOperation } from '@ledgerhq/ledger-core/src/ledgercore_doc' -import { NoAddressesFound } from '@ledgerhq/live-common/lib/errors' -import { deserializeError } from '@ledgerhq/live-common/lib/errors/helpers' +import { NoAddressesFound } from '@ledgerhq/errors' +import { deserializeError } from '@ledgerhq/errors/lib/helpers' import { timeoutTagged } from './promise' export function isValidAddress(core: *, currency: *, address: string): boolean { diff --git a/src/helpers/live-common-setup-internal-hw.js b/src/helpers/live-common-setup-internal-hw.js index e4dc602d..23b7fd82 100644 --- a/src/helpers/live-common-setup-internal-hw.js +++ b/src/helpers/live-common-setup-internal-hw.js @@ -5,7 +5,7 @@ import { registerTransportModule } from '@ledgerhq/live-common/lib/hw' import { addAccessHook, setErrorRemapping } from '@ledgerhq/live-common/lib/hw/deviceAccess' import throttle from 'lodash/throttle' import TransportNodeHid from '@ledgerhq/hw-transport-node-hid' -import { DisconnectedDevice } from '@ledgerhq/live-common/lib/errors' +import { DisconnectedDevice } from '@ledgerhq/errors' import { retry } from './promise' let busy = false diff --git a/src/helpers/promise.js b/src/helpers/promise.js index d3cbc908..a9cec1b7 100644 --- a/src/helpers/promise.js +++ b/src/helpers/promise.js @@ -2,7 +2,7 @@ // small utilities for Promises import logger from 'logger' -import { TimeoutTagged } from '@ledgerhq/live-common/lib/errors' +import { TimeoutTagged } from '@ledgerhq/errors' export const delay = (ms: number): Promise => new Promise(f => setTimeout(f, ms)) diff --git a/src/helpers/reset.js b/src/helpers/reset.js index 1a64a15d..28439120 100644 --- a/src/helpers/reset.js +++ b/src/helpers/reset.js @@ -9,7 +9,7 @@ import { disable as disableDBMiddleware } from 'middlewares/db' import db from 'helpers/db' import { delay } from 'helpers/promise' import killInternalProcess from 'commands/killInternalProcess' -import { DBNotReset } from '@ledgerhq/live-common/lib/errors' +import { DBNotReset } from '@ledgerhq/errors' async function resetLibcoreDatabase() { await killInternalProcess.send().toPromise() diff --git a/src/internals/index.js b/src/internals/index.js index c13b56a8..696b463d 100644 --- a/src/internals/index.js +++ b/src/internals/index.js @@ -10,7 +10,7 @@ import uuid from 'uuid/v4' import { setImplementation } from 'api/network' import sentry from 'sentry/node' import { EXPERIMENTAL_HTTP_ON_RENDERER } from 'config/constants' -import { serializeError } from '@ledgerhq/live-common/lib/errors/helpers' +import { serializeError } from '@ledgerhq/errors/lib/helpers' require('../env') diff --git a/src/main/bridge.js b/src/main/bridge.js index 50d16f6a..dd5510bd 100644 --- a/src/main/bridge.js +++ b/src/main/bridge.js @@ -11,7 +11,7 @@ import LoggerTransport from 'logger/logger-transport-main' import sentry, { captureException } from 'sentry/node' import user from 'helpers/user' import { cleanUpBeforeClosingSync } from 'helpers/log' -import { deserializeError } from '@ledgerhq/live-common/lib/errors/helpers' +import { deserializeError } from '@ledgerhq/errors/lib/helpers' import setupAutoUpdater, { quitAndInstall } from './autoUpdate' import { setInternalProcessPID } from './terminator' diff --git a/src/reducers/currenciesStatus.js b/src/reducers/currenciesStatus.js index 3d48f264..3e98562a 100644 --- a/src/reducers/currenciesStatus.js +++ b/src/reducers/currenciesStatus.js @@ -37,7 +37,9 @@ export const fetchCurrenciesStatus = () => async (dispatch: *) => { method: 'GET', url: process.env.LL_STATUS_ENDPOINT || urls.currenciesStatus, }) - dispatch(setCurrenciesStatus(data)) + if (Array.isArray(data)) { + dispatch(setCurrenciesStatus(data)) + } } catch (err) { logger.error(err) } diff --git a/static/i18n/en/app.json b/static/i18n/en/app.json index 956b3c84..9b7e69c9 100644 --- a/static/i18n/en/app.json +++ b/static/i18n/en/app.json @@ -142,6 +142,7 @@ "messageIfSkipped": "Your {{currencyName}} address has not been confirmed on your Ledger device. Please verify it for optimal security." }, "deviceConnect": { + "dashboard": "Navigate to the <1><0>{{managerAppName}} on your device", "step1": "Connect and unlock your <1>Ledger device", "step2": "Navigate to the <1><0>{{managerAppName}} app on your device", "step3": "Allow <1><0>Ledger Manager on your device" @@ -450,8 +451,12 @@ }, "repairDevice": { "title": "Repair your Ledger device", - "desc": "If you encountered some issue while updating your device and cannot resume the update process, you can try this option to repair your device.", - "button": "Repair" + "descSettings": "Use this tool to restore your Ledger device if it has become stuck during a firmware update.", + "desc": "Please select the state of your Ledger device.", + "button": "Repair", + "generic": "Bootloader", + "mcuNotGenuine": "MCU not genuine", + "followDeviceRepair": "Follow device repair instructions" }, "exportLogs": { "title": "Export logs", @@ -850,7 +855,7 @@ "description": "{{message}}" }, "UnexpectedBootloader": { - "title": "Opps, your device should not be in Bootloader mode", + "title": "Oops, your device should not be in Bootloader mode", "description": "Please restart your device or contact us" }, "UserRefusedFirmwareUpdate": { @@ -869,6 +874,10 @@ "title": "App update required", "description": "Uninstall and reinstall the {{managerAppName}} app in the Manager" }, + "DeviceOnDashboardExpected": { + "title": "Return to Dashboard", + "description": "Please navigate back to Dashboard on your device" + }, "WebsocketConnectionError": { "title": "Sorry, try again (websocket error)", "description": null @@ -901,6 +910,10 @@ }, "FeeNotLoaded": { "title": "Couldn’t load fee rates, please set manual fees" + }, + "UnknownMCU": { + "title": "Unknown MCU version", + "description": "Please contact Ledger Support" } } -} \ No newline at end of file +} diff --git a/static/i18n/es/app.json b/static/i18n/es/app.json index e2815a60..923863d2 100644 --- a/static/i18n/es/app.json +++ b/static/i18n/es/app.json @@ -142,6 +142,7 @@ "messageIfSkipped": "Your {{currencyName}} address has not been confirmed on your Ledger device. Please verify it for optimal security." }, "deviceConnect": { + "dashboard": "Navigate to the <1><0>{{managerAppName}} on your device", "step1": "Connect and unlock your <1>Ledger device", "step2": "Navigate to the <1><0>{{managerAppName}} app on your device", "step3": "Allow <1><0>Ledger Manager on your device" diff --git a/static/i18n/fr/app.json b/static/i18n/fr/app.json index e3c4885c..254fddc4 100644 --- a/static/i18n/fr/app.json +++ b/static/i18n/fr/app.json @@ -142,6 +142,7 @@ "messageIfSkipped": "Your {{currencyName}} address has not been confirmed on your Ledger device. Please verify it for optimal security." }, "deviceConnect": { + "dashboard": "Navigate to the <1><0>{{managerAppName}} on your device", "step1": "Connect and unlock your <1>Ledger device", "step2": "Navigate to the <1><0>{{managerAppName}} app on your device", "step3": "Allow <1><0>Ledger Manager on your device" diff --git a/static/i18n/ja/app.json b/static/i18n/ja/app.json index b6957c97..2333e40f 100644 --- a/static/i18n/ja/app.json +++ b/static/i18n/ja/app.json @@ -142,6 +142,7 @@ "messageIfSkipped": "Your {{currencyName}} address has not been confirmed on your Ledger device. Please verify it for optimal security." }, "deviceConnect": { + "dashboard": "Navigate to the <1><0>{{managerAppName}} on your device", "step1": "Connect and unlock your <1>Ledger device", "step2": "Navigate to the <1><0>{{managerAppName}} app on your device", "step3": "Allow <1><0>Ledger Manager on your device" diff --git a/static/i18n/ko/app.json b/static/i18n/ko/app.json index 800006ba..2fbf6e5d 100644 --- a/static/i18n/ko/app.json +++ b/static/i18n/ko/app.json @@ -142,6 +142,7 @@ "messageIfSkipped": "Your {{currencyName}} address has not been confirmed on your Ledger device. Please verify it for optimal security." }, "deviceConnect": { + "dashboard": "Navigate to the <1><0>{{managerAppName}} on your device", "step1": "Connect and unlock your <1>Ledger device", "step2": "Navigate to the <1><0>{{managerAppName}} app on your device", "step3": "Allow <1><0>Ledger Manager on your device" diff --git a/static/i18n/ru/app.json b/static/i18n/ru/app.json index 9770d5b0..db9bcb7a 100644 --- a/static/i18n/ru/app.json +++ b/static/i18n/ru/app.json @@ -142,6 +142,7 @@ "messageIfSkipped": "Your {{currencyName}} address has not been confirmed on your Ledger device. Please verify it for optimal security." }, "deviceConnect": { + "dashboard": "Navigate to the <1><0>{{managerAppName}} on your device", "step1": "Connect and unlock your <1>Ledger device", "step2": "Navigate to the <1><0>{{managerAppName}} app on your device", "step3": "Allow <1><0>Ledger Manager on your device" diff --git a/static/i18n/zh/app.json b/static/i18n/zh/app.json index be84ec2c..bcf8fb40 100644 --- a/static/i18n/zh/app.json +++ b/static/i18n/zh/app.json @@ -142,6 +142,7 @@ "messageIfSkipped": "Your {{currencyName}} address has not been confirmed on your Ledger device. Please verify it for optimal security." }, "deviceConnect": { + "dashboard": "Navigate to the <1><0>{{managerAppName}} on your device", "step1": "Connect and unlock your <1>Ledger device", "step2": "Navigate to the <1><0>{{managerAppName}} app on your device", "step3": "Allow <1><0>Ledger Manager on your device" diff --git a/yarn.lock b/yarn.lock index 93048390..2f9f76b0 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1677,6 +1677,11 @@ camelcase "^5.0.0" prettier "^1.13.7" +"@ledgerhq/errors@^4.32.0": + version "4.33.7" + resolved "https://registry.yarnpkg.com/@ledgerhq/errors/-/errors-4.33.7.tgz#b78becd20e8a68f7115ad0986fa357a8adddf6b7" + integrity sha512-1vKWcttI5NHpT6rMKKuxWPAjfwDgfgUTf/AyNAT5KXHlhiLvqnA3NDCdNUVadajVNKSa/s1u1ZWKismtbfePzg== + "@ledgerhq/hw-app-btc@^4.32.0": version "4.32.0" resolved "https://registry.yarnpkg.com/@ledgerhq/hw-app-btc/-/hw-app-btc-4.32.0.tgz#e883dcaa3ebb4aca1e2cb27acfc47b8db4e85f3f" @@ -1725,12 +1730,14 @@ bindings "^1.3.0" nan "^2.6.2" -"@ledgerhq/live-common@4.8.0-beta.24": - version "4.8.0-beta.24" - resolved "https://registry.yarnpkg.com/@ledgerhq/live-common/-/live-common-4.8.0-beta.24.tgz#5f30ea9b63c1a561120eb6757b6663d1c20b67e0" - integrity sha512-guW9LH/kAk9bmZ8dJV0OlzNYOoE8Jo0VPxZuYCLuzO09Xr41oBfEARdSnVNV6+n/L/BDc8EZSlixpbxMKZ9yFQ== +"@ledgerhq/live-common@4.12.0": + version "4.12.0" + resolved "https://registry.yarnpkg.com/@ledgerhq/live-common/-/live-common-4.12.0.tgz#7956564236f30460916bf61667fac4ea7ab5d814" + integrity sha512-7EH/hvZiaYzOjNd/dMZif1ydFABRxR/zc5U13XhRMutL5ru4cbyDOKW6zC97FZNNaC35RJwhT7MFkhu2hwMvLA== + dependencies: "@aeternity/ledger-app-api" "0.0.4" + "@ledgerhq/errors" "^4.32.0" "@ledgerhq/hw-app-btc" "^4.32.0" "@ledgerhq/hw-app-eth" "^4.32.0" "@ledgerhq/hw-app-xrp" "^4.32.0"