A Metamask fork with Infura removed and default networks editable
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
ciphermask/ui/app/pages/send/send-footer/send-footer.utils.js

76 lines
1.8 KiB

import ethAbi from 'ethereumjs-abi'
import ethUtil from 'ethereumjs-util'
import { TOKEN_TRANSFER_FUNCTION_SIGNATURE } from '../send.constants'
import { addHexPrefixToObjectValues } from '../../../helpers/utils/util'
export function constructTxParams ({ sendToken, data, to, amount, from, gas, gasPrice }) {
const txParams = {
data,
from,
value: '0',
gas,
gasPrice,
}
if (!sendToken) {
txParams.value = amount
txParams.to = to
}
return addHexPrefixToObjectValues(txParams)
}
export function constructUpdatedTx ({
amount,
data,
editingTransactionId,
from,
gas,
gasPrice,
sendToken,
to,
unapprovedTxs,
}) {
const unapprovedTx = unapprovedTxs[editingTransactionId]
const txParamsData = unapprovedTx.txParams.data ? unapprovedTx.txParams.data : data
const editingTx = {
...unapprovedTx,
txParams: Object.assign(
unapprovedTx.txParams,
addHexPrefixToObjectValues({
data: txParamsData,
to,
from,
gas,
gasPrice,
value: amount,
}),
),
}
if (sendToken) {
Object.assign(editingTx.txParams, addHexPrefixToObjectValues({
value: '0',
to: sendToken.address,
data: (
TOKEN_TRANSFER_FUNCTION_SIGNATURE + Array.prototype.map.call(
ethAbi.rawEncode(['address', 'uint256'], [to, ethUtil.addHexPrefix(amount)]),
(x) => (`00${x.toString(16)}`).slice(-2),
).join('')
),
}))
}
if (typeof editingTx.txParams.data === 'undefined') {
delete editingTx.txParams.data
}
return editingTx
}
export function addressIsNew (toAccounts, newAddress) {
const newAddressNormalized = newAddress.toLowerCase()
const foundMatching = toAccounts.some(({ address }) => address.toLowerCase() === newAddressNormalized)
return !foundMatching
}