aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDan <danjm.com@gmail.com>2018-03-20 19:37:23 +0800
committerDan <danjm.com@gmail.com>2018-03-20 19:37:23 +0800
commitdc92b56f184100a24aaf53c3e93619514159f938 (patch)
treed2a06089e5a096544abfcb27fa5c4fbf3d78d48f
parent424e98f6a896df6a848a92ef318464abc505d83d (diff)
downloadtangerine-wallet-browser-dc92b56f184100a24aaf53c3e93619514159f938.tar.gz
tangerine-wallet-browser-dc92b56f184100a24aaf53c3e93619514159f938.tar.zst
tangerine-wallet-browser-dc92b56f184100a24aaf53c3e93619514159f938.zip
Identify token transactions by method names token data, and not just whether they've been add via metamask.
-rw-r--r--ui/app/components/pending-tx/confirm-send-token.js1
-rw-r--r--ui/app/components/pending-tx/index.js14
-rw-r--r--ui/app/selectors.js3
3 files changed, 13 insertions, 5 deletions
diff --git a/ui/app/components/pending-tx/confirm-send-token.js b/ui/app/components/pending-tx/confirm-send-token.js
index 0a4182014..c347dd21e 100644
--- a/ui/app/components/pending-tx/confirm-send-token.js
+++ b/ui/app/components/pending-tx/confirm-send-token.js
@@ -86,6 +86,7 @@ function mapDispatchToProps (dispatch, ownProps) {
amount: tokenAmountInHex,
errors: { to: null, amount: null },
editingTransactionId: id,
+ token: ownProps.token,
}))
dispatch(actions.showSendTokenPage())
},
diff --git a/ui/app/components/pending-tx/index.js b/ui/app/components/pending-tx/index.js
index f4f6afb8f..9676e9c86 100644
--- a/ui/app/components/pending-tx/index.js
+++ b/ui/app/components/pending-tx/index.js
@@ -63,14 +63,17 @@ PendingTx.prototype.componentWillMount = async function () {
isFetching: false,
})
}
+ const tokenData = txParams && abiDecoder.decodeMethod(txParams.data)
+ const { name: tokenMethodName } = tokenData || {}
+ const isTokenTransaction = ['transfer', 'approve', 'transferFrom']
+ .find(possibleName => tokenMethodName === possibleName)
- try {
+ if (isTokenTransaction) {
const token = util.getContractAtAddress(txParams.to)
const results = await Promise.all([
token.symbol(),
token.decimals(),
])
-
const [ symbol, decimals ] = results
if (symbol[0] && decimals[0]) {
@@ -83,11 +86,14 @@ PendingTx.prototype.componentWillMount = async function () {
})
} else {
this.setState({
- transactionType: TX_TYPES.SEND_ETHER,
+ transactionType: TX_TYPES.SEND_TOKEN,
+ tokenAddress: txParams.to,
+ tokenSymbol: null,
+ tokenDecimals: null,
isFetching: false,
})
}
- } catch (e) {
+ } else {
this.setState({
transactionType: TX_TYPES.SEND_ETHER,
isFetching: false,
diff --git a/ui/app/selectors.js b/ui/app/selectors.js
index 5d2635775..a8b32f129 100644
--- a/ui/app/selectors.js
+++ b/ui/app/selectors.js
@@ -55,8 +55,9 @@ function getSelectedToken (state) {
const tokens = state.metamask.tokens || []
const selectedTokenAddress = state.metamask.selectedTokenAddress
const selectedToken = tokens.filter(({ address }) => address === selectedTokenAddress)[0]
+ const sendToken = state.metamask.send.token
- return selectedToken || null
+ return selectedToken || sendToken || null
}
function getSelectedTokenExchangeRate (state) {