diff --git a/ui/app/ducks/confirm-transaction/confirm-transaction.duck.js b/ui/app/ducks/confirm-transaction/confirm-transaction.duck.js index 4edf8a70cce4..169c9d5432bb 100644 --- a/ui/app/ducks/confirm-transaction/confirm-transaction.duck.js +++ b/ui/app/ducks/confirm-transaction/confirm-transaction.duck.js @@ -1,3 +1,4 @@ +import log from 'loglevel' import { conversionRateSelector, currentCurrencySelector, @@ -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)) diff --git a/ui/app/helpers/utils/transactions.util.js b/ui/app/helpers/utils/transactions.util.js index edf2e24f6dad..cb6c9536c77a 100644 --- a/ui/app/helpers/utils/transactions.util.js +++ b/ui/app/helpers/utils/transactions.util.js @@ -21,6 +21,7 @@ import { CANCEL_ATTEMPT_ACTION_KEY, } from '../constants/transactions' +import log from 'loglevel' import { addCurrencies } from './conversion-util' abiDecoder.addABI(abi) @@ -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 = {}) {