diff --git a/src/components/DeviceCheckAddress.js b/src/components/DeviceCheckAddress.js index 80108ded..e2121b06 100644 --- a/src/components/DeviceCheckAddress.js +++ b/src/components/DeviceCheckAddress.js @@ -1,16 +1,9 @@ // @flow import { PureComponent } from 'react' -import type { Account } from '@ledgerhq/live-common/lib/types' -import type { Device } from 'types/common' - -import getAddress from 'commands/getAddress' type Props = { - onCheck: boolean => void, render: ({ isVerified?: ?boolean }) => *, - account: Account, - device: Device, } type State = { @@ -22,11 +15,6 @@ class CheckAddress extends PureComponent { isVerified: null, } - componentDidMount() { - const { device, account } = this.props - this.verifyAddress({ device, account }) - } - componentWillUnmount() { this._isUnmounted = true } @@ -40,30 +28,6 @@ class CheckAddress extends PureComponent { this.setState(...args) } - verifyAddress = async ({ device, account }: { device: Device, account: Account }) => { - try { - const { address } = await getAddress - .send({ - currencyId: account.currency.id, - devicePath: device.path, - path: account.freshAddressPath, - segwit: !!account.isSegwit, - verify: true, - }) - .toPromise() - - if (address !== account.freshAddress) { - throw new Error('Confirmed address is different') - } - - this.safeSetState({ isVerified: true }) - this.props.onCheck(true) - } catch (err) { - this.safeSetState({ isVerified: false }) - this.props.onCheck(false) - } - } - render() { const { render } = this.props const { isVerified } = this.state diff --git a/src/components/modals/Receive/03-step-confirm-address.js b/src/components/modals/Receive/03-step-confirm-address.js index e5bbe89a..d356374b 100644 --- a/src/components/modals/Receive/03-step-confirm-address.js +++ b/src/components/modals/Receive/03-step-confirm-address.js @@ -34,7 +34,6 @@ type Props = { account: ?Account, addressVerified: ?boolean, device: ?Device, - onCheck: Function, t: T, } @@ -55,10 +54,7 @@ export default (props: Props) => ( props.account && ( } + render={() => } /> )} diff --git a/src/components/modals/Receive/index.js b/src/components/modals/Receive/index.js index a7029775..f3a402cb 100644 --- a/src/components/modals/Receive/index.js +++ b/src/components/modals/Receive/index.js @@ -8,6 +8,8 @@ import type { T, Device } from 'types/common' import { MODAL_RECEIVE } from 'config/constants' +import getAddress from 'commands/getAddress' + import Box from 'components/base/Box' import Breadcrumb from 'components/Breadcrumb' import Button from 'components/base/Button' @@ -108,6 +110,11 @@ class ReceiveModal extends PureComponent { return } this.setState({ stepIndex: stepIndex + 1 }) + + // TODO: do that better + if (stepIndex === 1) { + this.verifyAddress() + } } handlePrevStep = () => { @@ -154,12 +161,16 @@ class ReceiveModal extends PureComponent { } } - handleRetryCheckAddress = () => + handleRetryCheckAddress = () => { this.setState({ addressVerified: null, stepsErrors: [], }) + // TODO: do that better + this.verifyAddress() + } + handleChangeAmount = amount => this.setState({ amount }) handleBeforeOpenModal = ({ data }) => { @@ -180,6 +191,33 @@ class ReceiveModal extends PureComponent { stepIndex: this._steps.length - 1, // last step }) + verifyAddress = async () => { + const { account, deviceSelected: device } = this.state + try { + if (account && device) { + const { address } = await getAddress + .send({ + currencyId: account.currency.id, + devicePath: device.path, + path: account.freshAddressPath, + segwit: !!account.isSegwit, + verify: true, + }) + .toPromise() + + if (address !== account.freshAddress) { + throw new Error('Confirmed address is different') + } + + this.setState({ addressVerified: true, stepIndex: 3 }) + } else { + this.setState({ addressVerified: false }) + } + } catch (err) { + this.setState({ addressVerified: false }) + } + } + renderStep = () => { const { account, amount, addressVerified, deviceSelected, stepIndex } = this.state const { t } = this.props