aboutsummaryrefslogtreecommitdiffstats
path: root/ui/app/components/send_/send.component.js
diff options
context:
space:
mode:
authorDan <danjm.com@gmail.com>2018-04-28 03:03:00 +0800
committerDan <danjm.com@gmail.com>2018-04-30 23:35:48 +0800
commit26f965bcceb26ce7cdec9df9f213b44be8d9acac (patch)
tree155bad73750b5c3905f799eac6d298c9dc7305dc /ui/app/components/send_/send.component.js
parent33c16d1bf62133a87d8f24232ee85438a6b6a0e6 (diff)
downloadtangerine-wallet-browser-26f965bcceb26ce7cdec9df9f213b44be8d9acac.tar
tangerine-wallet-browser-26f965bcceb26ce7cdec9df9f213b44be8d9acac.tar.gz
tangerine-wallet-browser-26f965bcceb26ce7cdec9df9f213b44be8d9acac.tar.bz2
tangerine-wallet-browser-26f965bcceb26ce7cdec9df9f213b44be8d9acac.tar.lz
tangerine-wallet-browser-26f965bcceb26ce7cdec9df9f213b44be8d9acac.tar.xz
tangerine-wallet-browser-26f965bcceb26ce7cdec9df9f213b44be8d9acac.tar.zst
tangerine-wallet-browser-26f965bcceb26ce7cdec9df9f213b44be8d9acac.zip
Further refactors; includes refactor of send-v2.js and associated container
Diffstat (limited to 'ui/app/components/send_/send.component.js')
-rw-r--r--ui/app/components/send_/send.component.js143
1 files changed, 143 insertions, 0 deletions
diff --git a/ui/app/components/send_/send.component.js b/ui/app/components/send_/send.component.js
index e69de29bb..e014e5bce 100644
--- a/ui/app/components/send_/send.component.js
+++ b/ui/app/components/send_/send.component.js
@@ -0,0 +1,143 @@
+import React from 'react'
+import PropTypes from 'prop-types'
+import PersistentForm from '../../../lib/persistent-form'
+import {
+ getAmountErrorObject,
+ doesAmountErrorRequireUpdate,
+} from './send.utils'
+
+import PageContainer from '..//page-container/page-container.component'
+import SendHeader from './send-header/send-header.container'
+import SendContent from './send-content/send-content.component'
+import SendFooter from './send-footer/send-footer.container'
+
+export default class SendTransactionScreen extends PersistentForm {
+
+ static propTypes = {
+ amount: PropTypes.string,
+ amountConversionRate: PropTypes.oneOfType([
+ PropTypes.string,
+ PropTypes.number,
+ ]),
+ conversionRate: PropTypes.number,
+ data: PropTypes.string,
+ editingTransactionId: PropTypes.string,
+ from: PropTypes.object,
+ gasLimit: PropTypes.string,
+ gasPrice: PropTypes.string,
+ gasTotal: PropTypes.string,
+ history: PropTypes.object,
+ network: PropTypes.string,
+ primaryCurrency: PropTypes.string,
+ selectedAddress: PropTypes.string,
+ selectedToken: PropTypes.object,
+ tokenBalance: PropTypes.string,
+ tokenContract: PropTypes.object,
+ updateAndSetGasTotal: PropTypes.func,
+ updateSendErrors: PropTypes.func,
+ updateSendTokenBalance: PropTypes.func,
+ };
+
+ updateGas () {
+ const {
+ data,
+ editingTransactionId,
+ gasLimit,
+ gasPrice,
+ selectedAddress,
+ selectedToken = {},
+ updateAndSetGasTotal,
+ } = this.props
+
+ updateAndSetGasTotal({
+ data,
+ editingTransactionId,
+ gasLimit,
+ gasPrice,
+ selectedAddress,
+ selectedToken,
+ })
+ }
+
+ componentDidUpdate (prevProps) {
+ const {
+ amount,
+ amountConversionRate,
+ conversionRate,
+ from: { address, balance },
+ gasTotal,
+ network,
+ primaryCurrency,
+ selectedToken,
+ tokenBalance,
+ updateSendErrors,
+ updateSendTokenBalance,
+ tokenContract,
+ } = this.props
+
+ const {
+ from: { balance: prevBalance },
+ gasTotal: prevGasTotal,
+ tokenBalance: prevTokenBalance,
+ network: prevNetwork,
+ } = prevProps
+
+ const uninitialized = [prevBalance, prevGasTotal].every(n => n === null)
+
+ if (!uninitialized) {
+ const amountErrorRequiresUpdate = doesAmountErrorRequireUpdate({
+ balance,
+ gasTotal,
+ prevBalance,
+ prevGasTotal,
+ prevTokenBalance,
+ selectedToken,
+ tokenBalance,
+ })
+
+ if (amountErrorRequiresUpdate) {
+ const amountErrorObject = getAmountErrorObject({
+ amount,
+ amountConversionRate,
+ balance,
+ conversionRate,
+ gasTotal,
+ primaryCurrency,
+ selectedToken,
+ tokenBalance,
+ })
+ updateSendErrors(amountErrorObject)
+ }
+
+ if (network !== prevNetwork && network !== 'loading') {
+ updateSendTokenBalance({
+ selectedToken,
+ tokenContract,
+ address,
+ })
+ this.updateGas()
+ }
+ }
+ }
+
+ componentWillMount () {
+ this.updateGas()
+ }
+
+ render () {
+ const { history } = this.props
+
+ return (
+ <PageContainer>
+ <SendHeader/>
+ <SendContent/>
+ <SendFooter history={history}/>
+ </PageContainer>
+ )
+ }
+
+}
+
+SendTransactionScreen.contextTypes = {
+ t: PropTypes.func,
+}