diff --git a/src/components/CurrentAddressForAccount.js b/src/components/CurrentAddressForAccount.js
new file mode 100644
index 00000000..6bbd6547
--- /dev/null
+++ b/src/components/CurrentAddressForAccount.js
@@ -0,0 +1,22 @@
+// @flow
+
+import React from 'react'
+import type { Account } from '@ledgerhq/live-common/lib/types'
+
+import CurrentAddress from 'components/CurrentAddress'
+
+type Props = {
+ account: Account,
+}
+
+export default function CurrentAddressForAccount(props: Props) {
+ const { account, ...p } = props
+
+ // TODO: handle other cryptos than BTC-like
+ let freshAddress = account.addresses[0]
+ if (!freshAddress) {
+ freshAddress = { str: '', path: '' }
+ }
+
+ return
+}
diff --git a/src/components/DeviceCheckAddress.js b/src/components/DeviceCheckAddress.js
index b94dadf2..84a6ec78 100644
--- a/src/components/DeviceCheckAddress.js
+++ b/src/components/DeviceCheckAddress.js
@@ -27,35 +27,34 @@ class CheckAddress extends PureComponent {
this.verifyAddress({ device, account })
}
- componentDidUnmount() {
- if (this.sub) this.sub.unsubscribe()
- }
+ verifyAddress = async ({ device, account }: { device: Device, account: Account }) => {
+ try {
+ // TODO: this will work only for BTC-like accounts
+ const freshAddress = account.addresses[0]
+ if (!freshAddress) {
+ throw new Error('Account doesnt have fresh addresses')
+ }
+
+ const { address } = await getAddress
+ .send({
+ currencyId: account.currency.id,
+ devicePath: device.path,
+ path: freshAddress.path,
+ segwit: account.isSegwit,
+ verify: true,
+ })
+ .toPromise()
- sub: *
+ if (address !== freshAddress.str) {
+ throw new Error('Confirmed address is different')
+ }
- verifyAddress = ({ device, account }: { device: Device, account: Account }) => {
- this.sub = getAddress
- .send({
- currencyId: account.currency.id,
- devicePath: device.path,
- path: account.path,
- segwit: account.isSegwit,
- verify: true,
- })
- .subscribe({
- next: () => {
- this.setState({
- isVerified: true,
- })
- this.props.onCheck(true)
- },
- error: () => {
- this.setState({
- isVerified: false,
- })
- this.props.onCheck(false)
- },
- })
+ this.setState({ isVerified: true })
+ this.props.onCheck(true)
+ } catch (err) {
+ this.setState({ isVerified: false })
+ this.props.onCheck(false)
+ }
}
render() {
diff --git a/src/components/modals/Receive/03-step-confirm-address.js b/src/components/modals/Receive/03-step-confirm-address.js
index 2f205e1b..46cf076f 100644
--- a/src/components/modals/Receive/03-step-confirm-address.js
+++ b/src/components/modals/Receive/03-step-confirm-address.js
@@ -7,7 +7,7 @@ import type { Account } from '@ledgerhq/live-common/lib/types'
import type { Device, T } from 'types/common'
import Box from 'components/base/Box'
-import CurrentAddress from 'components/CurrentAddress'
+import CurrentAddressForAccount from 'components/CurrentAddressForAccount'
import DeviceConfirm from 'components/DeviceConfirm'
import DeviceCheckAddress from 'components/DeviceCheckAddress'
@@ -50,7 +50,7 @@ export default (props: Props) => (
{props.t('receive:steps.confirmAddress.action')}
{props.t('receive:steps.confirmAddress.text')}
- {props.account && }
+ {props.account && }
{props.device &&
props.account && (
diff --git a/src/components/modals/Receive/04-step-receive-funds.js b/src/components/modals/Receive/04-step-receive-funds.js
index a913b8a7..98096f7f 100644
--- a/src/components/modals/Receive/04-step-receive-funds.js
+++ b/src/components/modals/Receive/04-step-receive-funds.js
@@ -6,7 +6,7 @@ import type { Account } from '@ledgerhq/live-common/lib/types'
import type { T } from 'types/common'
import Box from 'components/base/Box'
-import CurrentAddress from 'components/CurrentAddress'
+import CurrentAddressForAccount from 'components/CurrentAddressForAccount'
import Label from 'components/base/Label'
import RequestAmount from 'components/RequestAmount'
@@ -30,16 +30,17 @@ export default (props: Props) => (
withMax={false}
/>
-
+ {props.account && (
+
+ )}
)