aboutsummaryrefslogtreecommitdiffstats
path: root/ui/app/components/pages/confirm-transaction/confirm-transaction.component.js
diff options
context:
space:
mode:
authorAlexander Tseung <alextsg@gmail.com>2018-06-26 03:06:57 +0800
committerAlexander Tseung <alextsg@gmail.com>2018-07-07 07:27:08 +0800
commite89549846fd3bd520b99740c7845f48f368c3afa (patch)
tree6e248d21c75c4336890229aaae4e07c261a59b8e /ui/app/components/pages/confirm-transaction/confirm-transaction.component.js
parentea9d51e427b8e607e612a01629bebf153e516ad9 (diff)
downloadtangerine-wallet-browser-e89549846fd3bd520b99740c7845f48f368c3afa.tar
tangerine-wallet-browser-e89549846fd3bd520b99740c7845f48f368c3afa.tar.gz
tangerine-wallet-browser-e89549846fd3bd520b99740c7845f48f368c3afa.tar.bz2
tangerine-wallet-browser-e89549846fd3bd520b99740c7845f48f368c3afa.tar.lz
tangerine-wallet-browser-e89549846fd3bd520b99740c7845f48f368c3afa.tar.xz
tangerine-wallet-browser-e89549846fd3bd520b99740c7845f48f368c3afa.tar.zst
tangerine-wallet-browser-e89549846fd3bd520b99740c7845f48f368c3afa.zip
Refactor data flow, signature request routing
Diffstat (limited to 'ui/app/components/pages/confirm-transaction/confirm-transaction.component.js')
-rw-r--r--ui/app/components/pages/confirm-transaction/confirm-transaction.component.js126
1 files changed, 100 insertions, 26 deletions
diff --git a/ui/app/components/pages/confirm-transaction/confirm-transaction.component.js b/ui/app/components/pages/confirm-transaction/confirm-transaction.component.js
index cc0b019e0..29ee5eedc 100644
--- a/ui/app/components/pages/confirm-transaction/confirm-transaction.component.js
+++ b/ui/app/components/pages/confirm-transaction/confirm-transaction.component.js
@@ -1,6 +1,8 @@
import React, { Component } from 'react'
import PropTypes from 'prop-types'
import { Switch, Route } from 'react-router-dom'
+import R from 'ramda'
+import Loading from '../../loading-screen'
import ConfirmTransactionSwitch from '../confirm-transaction-switch'
import ConfirmTransactionBase from '../confirm-transaction-base'
import ConfirmSendEther from '../confirm-send-ether'
@@ -11,12 +13,12 @@ import ConfTx from '../../../conf-tx'
import {
DEFAULT_ROUTE,
CONFIRM_TRANSACTION_ROUTE,
- CONFIRM_DEPLOY_CONTRACT_ROUTE,
- CONFIRM_SEND_ETHER_ROUTE,
- CONFIRM_SEND_TOKEN_ROUTE,
- CONFIRM_APPROVE_ROUTE,
- CONFIRM_TOKEN_METHOD_ROUTE,
- SIGNATURE_REQUEST_ROUTE,
+ CONFIRM_DEPLOY_CONTRACT_PATH,
+ CONFIRM_SEND_ETHER_PATH,
+ CONFIRM_SEND_TOKEN_PATH,
+ CONFIRM_APPROVE_PATH,
+ CONFIRM_TOKEN_METHOD_PATH,
+ SIGNATURE_REQUEST_PATH,
} from '../../../routes'
export default class ConfirmTransaction extends Component {
@@ -25,35 +27,107 @@ export default class ConfirmTransaction extends Component {
totalUnapprovedCount: PropTypes.number.isRequired,
match: PropTypes.object,
send: PropTypes.object,
+ unconfirmedTransactions: PropTypes.array,
+ setTransactionToConfirm: PropTypes.func,
+ confirmTransaction: PropTypes.object,
}
componentDidMount () {
- const { totalUnapprovedCount = 0, send = {}, history } = this.props
+ const {
+ totalUnapprovedCount = 0,
+ send = {},
+ history,
+ confirmTransaction: { txData: { id: transactionId } = {} },
+ } = this.props
if (!totalUnapprovedCount && !send.to) {
history.replace(DEFAULT_ROUTE)
+ return
+ }
+
+ if (!transactionId) {
+ this.setTransactionToConfirm()
+ }
+ }
+
+ componentDidUpdate () {
+ const {
+ match: { params: { id: paramsTransactionId } = {} },
+ setTransactionToConfirm,
+ confirmTransaction: { txData: { id: transactionId } = {} },
+ } = this.props
+
+ if (paramsTransactionId && transactionId && paramsTransactionId !== transactionId + '') {
+ setTransactionToConfirm(paramsTransactionId)
+ }
+
+ if (!paramsTransactionId) {
+ this.setTransactionToConfirm()
+ }
+ }
+
+ setTransactionToConfirm () {
+ const {
+ history,
+ unconfirmedTransactions,
+ match: { params: { id: paramsTransactionId } = {} },
+ setTransactionToConfirm,
+ } = this.props
+
+ if (paramsTransactionId) {
+ // Check to make sure params ID is valid
+ const tx = R.find(({ id }) => id + '' === paramsTransactionId)(unconfirmedTransactions)
+
+ if (!tx) {
+ history.replace(DEFAULT_ROUTE)
+ } else {
+ setTransactionToConfirm(paramsTransactionId)
+ }
+ } else if (unconfirmedTransactions.length) {
+ const transactionId = unconfirmedTransactions[0].id
+ setTransactionToConfirm(transactionId)
}
}
render () {
- return (
- <Switch>
- <Route
- exact
- path={`${CONFIRM_DEPLOY_CONTRACT_ROUTE}/:id?`}
- component={ConfirmDeployContract}
- />
- <Route
- exact
- path={`${CONFIRM_TOKEN_METHOD_ROUTE}/:id?`}
- component={ConfirmTransactionBase}
- />
- <Route exact path={`${CONFIRM_SEND_ETHER_ROUTE}/:id?`} component={ConfirmSendEther} />
- <Route exact path={`${CONFIRM_SEND_TOKEN_ROUTE}/:id?`} component={ConfirmSendToken} />
- <Route exact path={`${CONFIRM_APPROVE_ROUTE}/:id?`} component={ConfirmApprove} />
- <Route exact path={SIGNATURE_REQUEST_ROUTE} component={ConfTx} />
- <Route path={`${CONFIRM_TRANSACTION_ROUTE}/:id?`} component={ConfirmTransactionSwitch} />
- </Switch>
- )
+ const { confirmTransaction: { txData: { id } } = {} } = this.props
+
+ return id
+ ? (
+ <Switch>
+ <Route
+ exact
+ path={`${CONFIRM_TRANSACTION_ROUTE}/:id?${CONFIRM_DEPLOY_CONTRACT_PATH}`}
+ component={ConfirmDeployContract}
+ />
+ <Route
+ exact
+ path={`${CONFIRM_TRANSACTION_ROUTE}/:id?${CONFIRM_TOKEN_METHOD_PATH}`}
+ component={ConfirmTransactionBase}
+ />
+ <Route
+ exact
+ path={`${CONFIRM_TRANSACTION_ROUTE}/:id?${CONFIRM_SEND_ETHER_PATH}`}
+ component={ConfirmSendEther}
+ />
+ <Route
+ exact
+ path={`${CONFIRM_TRANSACTION_ROUTE}/:id?${CONFIRM_SEND_TOKEN_PATH}`}
+ component={ConfirmSendToken}
+ />
+ <Route
+ exact
+ path={`${CONFIRM_TRANSACTION_ROUTE}/:id?${CONFIRM_APPROVE_PATH}`}
+ component={ConfirmApprove}
+ />
+ <Route
+ exact
+ path={`${CONFIRM_TRANSACTION_ROUTE}/:id?${SIGNATURE_REQUEST_PATH}`}
+ component={ConfTx}
+ />
+ <Route path={`${CONFIRM_TRANSACTION_ROUTE}/:id?`} component={ConfirmTransactionSwitch} />
+ </Switch>
+ )
+ : <Loading />
}
}