aboutsummaryrefslogtreecommitdiffstats
path: root/old-ui/app/account-qr.js
blob: b41cc511216c454da39e8cc73af2887f064d8cac (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
const PropTypes = require('prop-types')
const {PureComponent} = require('react')
const h = require('react-hyperscript')
const {qrcode: qrCode} = require('qrcode-npm')
const {connect} = require('react-redux')
const {isHexPrefixed} = require('ethereumjs-util')
const actions = require('../../ui/app/actions')
const CopyButton = require('./components/copyButton')

class AccountQrScreen extends PureComponent {
  static defaultProps = {
    warning: null,
  }

  static propTypes = {
    dispatch: PropTypes.func.isRequired,
    buyView: PropTypes.any.isRequired,
    Qr: PropTypes.object.isRequired,
    selectedAddress: PropTypes.string.isRequired,
    warning: PropTypes.node,
  }

  render () {
    const {dispatch, Qr, selectedAddress, warning} = this.props
    const address = `${isHexPrefixed(Qr.data) ? 'ethereum:' : ''}${Qr.data}`
    const qrImage = qrCode(4, 'M')

    qrImage.addData(address)
    qrImage.make()

    return h('div.flex-column.full-width', {
      style: {
        alignItems: 'center',
        boxSizing: 'border-box',
        padding: '50px',
      },
    }, [
      h('div.flex-row.full-width', {
        style: {
          alignItems: 'flex-start',
        },
      }, [
        h('i.fa.fa-arrow-left.fa-lg.cursor-pointer.color-orange', {
          onClick () {
            dispatch(actions.backToAccountDetail(selectedAddress))
          },
        }),
      ]),
      h('div.qr-header', Qr.message),
      warning && h('span.error.flex-center', {
        style: {
          textAlign: 'center',
          width: '229px',
          height: '82px',
        },
      }, [
        this.props.warning,
      ]),
      h('div#qr-container.flex-column', {
        style: {
          marginTop: '25px',
          marginBottom: '15px',
        },
        dangerouslySetInnerHTML: {
          __html: qrImage.createTableTag(4),
        },
      }),
      h('div.flex-row.full-width', [
        h('h3.ellip-address.grow-tenx', Qr.data),
        h(CopyButton, {
          value: Qr.data,
        }),
      ]),
    ])
  }
}

function mapStateToProps (state) {
  return {
    Qr: state.appState.Qr,
    buyView: state.appState.buyView,
    warning: state.appState.warning,
  }
}

module.exports = connect(mapStateToProps)(AccountQrScreen)