diff options
author | Alexander Tseung <alextsg@gmail.com> | 2018-06-23 14:52:45 +0800 |
---|---|---|
committer | Alexander Tseung <alextsg@gmail.com> | 2018-07-07 07:27:08 +0800 |
commit | ea9d51e427b8e607e612a01629bebf153e516ad9 (patch) | |
tree | 6363cd72b7517442c718901cc8b8ed023d134081 /ui/app/components/pages/confirm-transaction-switch/confirm-transaction-switch.component.js | |
parent | b4aaf30d6fe829f18dea68a5e6cc321b9fb00d4e (diff) | |
download | tangerine-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.js | 71 |
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 /> + } +} |