aboutsummaryrefslogtreecommitdiffstats
path: root/ui/app/components/pages/confirm-transaction-switch/confirm-transaction-switch.component.js
diff options
context:
space:
mode:
authorAlexander Tseung <alextsg@gmail.com>2018-06-23 14:52:45 +0800
committerAlexander Tseung <alextsg@gmail.com>2018-07-07 07:27:08 +0800
commitea9d51e427b8e607e612a01629bebf153e516ad9 (patch)
tree6363cd72b7517442c718901cc8b8ed023d134081 /ui/app/components/pages/confirm-transaction-switch/confirm-transaction-switch.component.js
parentb4aaf30d6fe829f18dea68a5e6cc321b9fb00d4e (diff)
downloadtangerine-wallet-browser-ea9d51e427b8e607e612a01629bebf153e516ad9.tar.gz
tangerine-wallet-browser-ea9d51e427b8e607e612a01629bebf153e516ad9.tar.zst
tangerine-wallet-browser-ea9d51e427b8e607e612a01629bebf153e516ad9.zip
Refactor and redesign confirm transaction views
Diffstat (limited to 'ui/app/components/pages/confirm-transaction-switch/confirm-transaction-switch.component.js')
-rw-r--r--ui/app/components/pages/confirm-transaction-switch/confirm-transaction-switch.component.js71
1 files changed, 71 insertions, 0 deletions
diff --git a/ui/app/components/pages/confirm-transaction-switch/confirm-transaction-switch.component.js b/ui/app/components/pages/confirm-transaction-switch/confirm-transaction-switch.component.js
new file mode 100644
index 000000000..5f337ab61
--- /dev/null
+++ b/ui/app/components/pages/confirm-transaction-switch/confirm-transaction-switch.component.js
@@ -0,0 +1,71 @@
+import React, { Component } from 'react'
+import PropTypes from 'prop-types'
+import { Redirect } from 'react-router-dom'
+import R from 'ramda'
+import Loading from '../../loading-screen'
+import {
+ CONFIRM_DEPLOY_CONTRACT_ROUTE,
+ CONFIRM_SEND_ETHER_ROUTE,
+ CONFIRM_SEND_TOKEN_ROUTE,
+ CONFIRM_APPROVE_ROUTE,
+ CONFIRM_TOKEN_METHOD_ROUTE,
+ SIGNATURE_REQUEST_ROUTE,
+} from '../../../routes'
+import { isConfirmDeployContract, getTokenData } from './confirm-transaction-switch.util'
+import { TOKEN_METHOD_TRANSFER, TOKEN_METHOD_APPROVE } from './confirm-transaction-switch.constants'
+
+export default class ConfirmTransactionSwitch extends Component {
+ static propTypes = {
+ unconfirmedTransactions: PropTypes.array,
+ match: PropTypes.object,
+ }
+
+ getTransaction () {
+ const { unconfirmedTransactions, match } = this.props
+ const { params: { id: paramsTransactionId } = {} } = match
+
+ return paramsTransactionId
+ ? R.find(({ id }) => id + '' === paramsTransactionId)(unconfirmedTransactions)
+ : unconfirmedTransactions[0]
+ }
+
+ redirectToTransaction (txData) {
+ const { id, txParams: { data } } = txData
+
+ if (isConfirmDeployContract(txData)) {
+ return <Redirect to={{ pathname: `${CONFIRM_DEPLOY_CONTRACT_ROUTE}/${id}` }} />
+ }
+
+ if (data) {
+ const tokenData = getTokenData(data)
+ const { name: tokenMethodName } = tokenData || {}
+
+ switch (tokenMethodName) {
+ case TOKEN_METHOD_TRANSFER:
+ return <Redirect to={{ pathname: `${CONFIRM_SEND_TOKEN_ROUTE}/${id}` }} />
+ case TOKEN_METHOD_APPROVE:
+ return <Redirect to={{ pathname: `${CONFIRM_APPROVE_ROUTE}/${id}` }} />
+ default:
+ return <Redirect to={{ pathname: `${CONFIRM_TOKEN_METHOD_ROUTE}/${id}` }} />
+ }
+ }
+
+ return <Redirect to={{ pathname: `${CONFIRM_SEND_ETHER_ROUTE}/${id}` }} />
+ }
+
+ render () {
+ const txData = this.getTransaction()
+
+ if (!txData) {
+ return <Loading />
+ }
+
+ if (txData.txParams) {
+ return this.redirectToTransaction(txData)
+ } else if (txData.msgParams) {
+ return <Redirect to={{ pathname: SIGNATURE_REQUEST_ROUTE }} />
+ }
+
+ return <Loading />
+ }
+}