2020-01-09 04:34:58 +01:00
|
|
|
import ethAbi from 'ethereumjs-abi'
|
|
|
|
import { TOKEN_TRANSFER_FUNCTION_SIGNATURE } from '../send.constants'
|
2020-11-06 22:18:00 +01:00
|
|
|
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,
|
|
|
|
}
|
|
|
|
|
2020-05-29 19:46:10 +02:00
|
|
|
if (!sendToken) {
|
2018-04-26 18:38:38 +02:00
|
|
|
txParams.value = amount
|
|
|
|
txParams.to = to
|
|
|
|
}
|
|
|
|
|
2018-07-17 17:11:43 +02:00
|
|
|
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,
|
2020-05-29 19:46:10 +02:00
|
|
|
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
|
2019-04-17 21:15:13 +02:00
|
|
|
|
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,
|
2020-07-14 17:20:41 +02:00
|
|
|
}),
|
2018-07-17 00:50:26 +02:00
|
|
|
),
|
2018-04-26 18:38:38 +02:00
|
|
|
}
|
|
|
|
|
2020-05-29 19:46:10 +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'],
|
2020-11-06 22:18:00 +01:00
|
|
|
[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
|
|
|
}
|
2018-05-05 17:11:53 +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) {
|
2019-03-29 06:34:49 +01:00
|
|
|
const newAddressNormalized = newAddress.toLowerCase()
|
2020-11-03 00:41:28 +01:00
|
|
|
const foundMatching = toAccounts.some(
|
|
|
|
({ address }) => address.toLowerCase() === newAddressNormalized,
|
|
|
|
)
|
2019-03-29 06:34:49 +01:00
|
|
|
return !foundMatching
|
2018-04-26 18:38:38 +02:00
|
|
|
}
|