-
Notifications
You must be signed in to change notification settings - Fork 504
/
index.tsx
80 lines (68 loc) · 2.03 KB
/
index.tsx
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
import { actions } from 'data'
import { bindActionCreators, compose } from 'redux'
import { connect, ConnectedProps } from 'react-redux'
import { getData } from './selectors'
import { Remote } from 'blockchain-wallet-v4/src'
import modalEnhancer from 'providers/ModalEnhancer'
import React from 'react'
import TransferEth from './template'
const DEFAULTS = {
txFee: '0',
ethBalance: '0',
ethAddr: ''
}
class TransferEthContainer extends React.PureComponent<Props> {
componentDidMount () {
this.props.transferEthActions.initialized({
from: this.props.legacyEthAddr,
type: 'LEGACY'
})
}
componentDidUpdate () {
if (Remote.Success.is(this.props.data)) {
const { txFee, ethBalance } = this.props.data.getOrElse(DEFAULTS)
if (parseFloat(txFee) > parseFloat(ethBalance)) {
this.props.modalActions.closeAllModals()
}
}
}
handleSubmit = () => {
const { ethAddr, ethBalance } = this.props.data.getOrElse(DEFAULTS)
this.props.transferEthActions.confirmTransferEth({
to: ethAddr,
effectiveBalance: ethBalance
})
}
render () {
const { data, legacyEthAddr } = this.props
return data.cata({
Success: val => (
<TransferEth
ethAddr={val.ethAddr}
ethBalance={val.ethBalance}
onSubmit={this.handleSubmit}
legacyEthAddr={legacyEthAddr}
txFee={val.txFee}
{...this.props}
/>
),
Loading: () => null,
NotAsked: () => null,
Failure: () => null
})
}
}
const mapStateToProps = state => ({
data: getData(state)
})
const mapDispatchToProps = dispatch => ({
modalActions: bindActionCreators(actions.modals, dispatch),
transferEthActions: bindActionCreators(actions.modules.transferEth, dispatch)
})
const connector = connect(mapStateToProps, mapDispatchToProps)
const enhance = compose(modalEnhancer('TransferEth'), connector)
type OwnProps = {
legacyEthAddr: string
}
type Props = OwnProps & ConnectedProps<typeof connector>
export default enhance(TransferEthContainer)