import classnames from 'classnames'; import PropTypes from 'prop-types'; import React, { Component } from 'react'; import Button from '../../../components/ui/button'; export default class SelectHardware extends Component { static contextTypes = { t: PropTypes.func, }; static propTypes = { connectToHardwareWallet: PropTypes.func.isRequired, browserSupported: PropTypes.bool.isRequired, }; state = { selectedDevice: null, }; connect = () => { if (this.state.selectedDevice) { this.props.connectToHardwareWallet(this.state.selectedDevice); } return null; }; renderConnectToTrezorButton() { return ( ); } renderConnectToLedgerButton() { return ( ); } renderButtons() { return ( <>
{this.renderConnectToLedgerButton()} {this.renderConnectToTrezorButton()}
); } renderUnsupportedBrowser() { return (

{this.context.t('browserNotSupported')}

{this.context.t('chromeRequiredForHardwareWallets')}

); } renderHeader() { return (

{this.context.t('hardwareWallets')}

{this.context.t('hardwareWalletsMsg')}

); } getAffiliateLinks() { const links = { trezor: `Trezor`, ledger: `Ledger`, }; const text = this.context.t('orderOneHere'); const response = text .replace('Trezor', links.trezor) .replace('Ledger', links.ledger); return (
); } renderTrezorAffiliateLink() { return (

{this.context.t('dontHaveAHardwareWallet')}

{this.getAffiliateLinks()}
); } scrollToTutorial = () => { if (this.referenceNode) { this.referenceNode.scrollIntoView({ behavior: 'smooth' }); } }; renderLearnMore() { return (

{this.context.t('learnMore')}

); } renderTutorialSteps() { const steps = [ { asset: 'hardware-wallet-step-1', dimensions: { width: '225px', height: '75px' }, title: this.context.t('step1HardwareWallet'), message: this.context.t('step1HardwareWalletMsg'), }, { asset: 'hardware-wallet-step-2', dimensions: { width: '300px', height: '100px' }, title: this.context.t('step2HardwareWallet'), message: this.context.t('step2HardwareWalletMsg'), }, { asset: 'hardware-wallet-step-3', dimensions: { width: '120px', height: '90px' }, title: this.context.t('step3HardwareWallet'), message: this.context.t('step3HardwareWalletMsg'), }, ]; return (
{ this.referenceNode = node; }} > {steps.map((step, index) => (

{step.title}

{step.message}

))}
); } renderFooter() { return (

{this.context.t('readyToConnect')}

{this.renderButtons()}

{this.context.t('havingTroubleConnecting')} {this.context.t('getHelp')}

); } renderConnectScreen() { return (
{this.renderHeader()} {this.renderButtons()} {this.renderTrezorAffiliateLink()} {this.renderLearnMore()} {this.renderTutorialSteps()} {this.renderFooter()}
); } render() { if (this.props.browserSupported) { return this.renderConnectScreen(); } return this.renderUnsupportedBrowser(); } }