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/pages/send/send-footer/send-footer.utils.js

97 lines
2.0 KiB

import ethAbi from 'ethereumjs-abi';
import { TOKEN_TRANSFER_FUNCTION_SIGNATURE } from '../send.constants';
import { addHexPrefix } from '../../../../app/scripts/lib/util';
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, 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;
}