1
0
mirror of https://github.com/kremalicious/metamask-extension.git synced 2024-10-24 04:13:27 +02:00
metamask-extension/ui/app/pages/send/send-footer/send-footer.utils.js

97 lines
2.0 KiB
JavaScript
Raw Normal View History

import ethAbi from 'ethereumjs-abi'
import { TOKEN_TRANSFER_FUNCTION_SIGNATURE } from '../send.constants'
import { addHexPrefix } from '../../../../../app/scripts/lib/util'
2020-10-06 20:28:38 +02:00
import { addHexPrefixToObjectValues } from '../../../helpers/utils/util'
2018-04-26 18:38:38 +02:00
2020-11-03 00:41:28 +01:00
export function constructTxParams({
sendToken,
data,
to,
amount,
from,
gas,
gasPrice,
}) {
2018-04-26 18:38:38 +02:00
const txParams = {
2018-07-17 00:50:26 +02:00
data,
2018-04-26 18:38:38 +02:00
from,
value: '0',
gas,
gasPrice,
}
if (!sendToken) {
2018-04-26 18:38:38 +02:00
txParams.value = amount
txParams.to = to
}
return addHexPrefixToObjectValues(txParams)
2018-04-26 18:38:38 +02:00
}
2020-11-03 00:41:28 +01:00
export function constructUpdatedTx({
2018-04-26 18:38:38 +02:00
amount,
2018-07-17 00:50:26 +02:00
data,
2018-04-26 18:38:38 +02:00
editingTransactionId,
from,
gas,
gasPrice,
sendToken,
2018-04-26 18:38:38 +02:00
to,
unapprovedTxs,
}) {
2018-07-17 00:50:26 +02:00
const unapprovedTx = unapprovedTxs[editingTransactionId]
2020-11-03 00:41:28 +01:00
const txParamsData = unapprovedTx.txParams.data
? unapprovedTx.txParams.data
: data
2018-04-26 18:38:38 +02:00
const editingTx = {
2018-07-17 00:50:26 +02:00
...unapprovedTx,
txParams: Object.assign(
unapprovedTx.txParams,
addHexPrefixToObjectValues({
data: txParamsData,
to,
from,
gas,
gasPrice,
value: amount,
}),
2018-07-17 00:50:26 +02:00
),
2018-04-26 18:38:38 +02:00
}
if (sendToken) {
2020-11-03 00:41:28 +01:00
Object.assign(
editingTx.txParams,
addHexPrefixToObjectValues({
value: '0',
to: sendToken.address,
data:
TOKEN_TRANSFER_FUNCTION_SIGNATURE +
Array.prototype.map
.call(
ethAbi.rawEncode(
['address', 'uint256'],
[to, addHexPrefix(amount)],
2020-11-03 00:41:28 +01:00
),
(x) => `00${x.toString(16)}`.slice(-2),
)
.join(''),
}),
)
2018-07-17 00:50:26 +02:00
}
2018-04-26 18:38:38 +02:00
2018-07-17 00:50:26 +02:00
if (typeof editingTx.txParams.data === 'undefined') {
delete editingTx.txParams.data
2018-04-26 18:38:38 +02:00
}
return editingTx
2018-04-26 18:38:38 +02:00
}
2020-11-03 00:41:28 +01:00
export function addressIsNew(toAccounts, newAddress) {
const newAddressNormalized = newAddress.toLowerCase()
2020-11-03 00:41:28 +01:00
const foundMatching = toAccounts.some(
({ address }) => address.toLowerCase() === newAddressNormalized,
)
return !foundMatching
2018-04-26 18:38:38 +02:00
}