Skip to content

Commit

Permalink
getMethodData() default to abi decoded method if registry lookup errors
Browse files Browse the repository at this point in the history
  • Loading branch information
danjm authored and whymarrh committed Mar 29, 2019
1 parent 125a95b commit afe116e
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 24 deletions.
17 changes: 6 additions & 11 deletions ui/app/ducks/confirm-transaction/confirm-transaction.duck.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import log from 'loglevel'
import {
conversionRateSelector,
currentCurrencySelector,
Expand Down Expand Up @@ -369,23 +370,17 @@ export function setTransactionToConfirm (transactionId) {
const { tokens: existingTokens } = state
const { data, to: tokenAddress } = txParams

try {
dispatch(setFetchingData(true))
const methodData = await getMethodData(data)

dispatch(updateMethodData(methodData))
} catch (error) {
dispatch(updateMethodData({}))
dispatch(setFetchingData(false))
}
dispatch(setFetchingData(true))
const methodData = await getMethodData(data)
dispatch(updateMethodData(methodData))

try {
const toSmartContract = await isSmartContractAddress(to)
dispatch(updateToSmartContract(toSmartContract))
dispatch(setFetchingData(false))
} catch (error) {
dispatch(setFetchingData(false))
log.error(error)
}
dispatch(setFetchingData(false))

const tokenData = getTokenData(data)
dispatch(updateTokenData(tokenData))
Expand Down
37 changes: 24 additions & 13 deletions ui/app/helpers/utils/transactions.util.js
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ import {
CANCEL_ATTEMPT_ACTION_KEY,
} from '../constants/transactions'

import log from 'loglevel'
import { addCurrencies } from './conversion-util'

abiDecoder.addABI(abi)
Expand All @@ -37,21 +38,31 @@ const registry = new MethodRegistry({ provider: global.ethereumProvider })
* @param {string} data - The hex data (@code txParams.data) of a transaction
* @returns {Object}
*/
export async function getMethodData (data = '') {
const prefixedData = ethUtil.addHexPrefix(data)
const fourBytePrefix = prefixedData.slice(0, 10)
const sig = await registry.lookup(fourBytePrefix)

if (!sig) {
return {}
}
export async function getMethodData (data = '') {
const prefixedData = ethUtil.addHexPrefix(data)
const fourBytePrefix = prefixedData.slice(0, 10)

try {
const sig = await registry.lookup(fourBytePrefix)

if (!sig) {
return {}
}

const parsedResult = registry.parse(sig)

return {
name: parsedResult.name,
params: parsedResult.args,
}
} catch (error) {
log.error(error)
const contractData = getTokenData(data)
const { name } = contractData || {}
return { name }
}

const parsedResult = registry.parse(sig)

return {
name: parsedResult.name,
params: parsedResult.args,
}
}

export function isConfirmDeployContract (txData = {}) {
Expand Down

0 comments on commit afe116e

Please sign in to comment.