1
0
mirror of https://github.com/kremalicious/metamask-extension.git synced 2024-12-23 01:39:44 +01:00

Transaction updates methods return whole tx meta (#14147)

* Transaction updates methods return whole tx meta

* Fix unit test

Co-authored-by: Dan Miller <danjm@pop-os.localdomain>
This commit is contained in:
Dan J Miller 2022-03-24 11:16:51 -02:30 committed by GitHub
parent e152eaf27b
commit 81b3e6e925
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 61 additions and 23 deletions

View File

@ -375,6 +375,7 @@ export default class TransactionController extends EventEmitter {
}
/**
* updates the params that are editible in the send edit flow
*
* @param {string} txId - transaction id
* @param {object} editableParams - holds the editable parameters
@ -382,10 +383,13 @@ export default class TransactionController extends EventEmitter {
* @param {string} editableParams.from
* @param {string} editableParams.to
* @param {string} editableParams.value
* @returns {TransactionMeta} the txMeta of the updated transaction
*/
updateEditableParams(txId, { data, from, to, value }) {
if (!this._checkIfTxStatusIsUnapproved(txId)) {
return;
throw new Error(
'Cannot call updateEditableParams on a transaction that is not in an unapproved state',
);
}
const editableParams = {
@ -401,6 +405,7 @@ export default class TransactionController extends EventEmitter {
editableParams.txParams = pickBy(editableParams.txParams);
const note = `Update Editable Params for ${txId}`;
this._updateTransaction(txId, editableParams, note);
return this._getTransaction(txId);
}
/**
@ -417,6 +422,7 @@ export default class TransactionController extends EventEmitter {
* @param {string} txGasFees.defaultGasEstimates
* @param {string} txGasFees.gas
* @param {string} txGasFees.originalGasEstimate
* @returns {TransactionMeta} the txMeta of the updated transaction
*/
updateTransactionGasFees(
txId,
@ -433,7 +439,9 @@ export default class TransactionController extends EventEmitter {
},
) {
if (!this._checkIfTxStatusIsUnapproved(txId)) {
return;
throw new Error(
'Cannot call updateTransactionGasFees on a transaction that is not in an unapproved state',
);
}
let txGasFees = {
@ -455,6 +463,7 @@ export default class TransactionController extends EventEmitter {
txGasFees = pickBy(txGasFees);
const note = `Update Transaction Gas Fees for ${txId}`;
this._updateTransaction(txId, txGasFees, note);
return this._getTransaction(txId);
}
/**
@ -464,13 +473,16 @@ export default class TransactionController extends EventEmitter {
* @param {object} txEstimateBaseFees - holds the estimate base fees parameters
* @param {string} txEstimateBaseFees.estimatedBaseFee
* @param {string} txEstimateBaseFees.decEstimatedBaseFee
* @returns {TransactionMeta} the txMeta of the updated transaction
*/
updateTransactionEstimatedBaseFee(
txId,
{ estimatedBaseFee, decEstimatedBaseFee },
) {
if (!this._checkIfTxStatusIsUnapproved(txId)) {
return;
throw new Error(
'Cannot call updateTransactionEstimatedBaseFee on a transaction that is not in an unapproved state',
);
}
let txEstimateBaseFees = { estimatedBaseFee, decEstimatedBaseFee };
@ -479,6 +491,7 @@ export default class TransactionController extends EventEmitter {
const note = `Update Transaction Estimated Base Fees for ${txId}`;
this._updateTransaction(txId, txEstimateBaseFees, note);
return this._getTransaction(txId);
}
/**
@ -489,10 +502,13 @@ export default class TransactionController extends EventEmitter {
* @param {object} swapApprovalTransaction - holds the metadata and token symbol
* @param {string} swapApprovalTransaction.type
* @param {string} swapApprovalTransaction.sourceTokenSymbol
* @returns {TransactionMeta} the txMeta of the updated transaction
*/
updateSwapApprovalTransaction(txId, { type, sourceTokenSymbol }) {
if (!this._checkIfTxStatusIsUnapproved(txId)) {
return;
throw new Error(
'Cannot call updateSwapApprovalTransaction on a transaction that is not in an unapproved state',
);
}
let swapApprovalTransaction = { type, sourceTokenSymbol };
@ -501,6 +517,7 @@ export default class TransactionController extends EventEmitter {
const note = `Update Swap Approval Transaction for ${txId}`;
this._updateTransaction(txId, swapApprovalTransaction, note);
return this._getTransaction(txId);
}
/**
@ -518,6 +535,7 @@ export default class TransactionController extends EventEmitter {
* @param {string} swapTransaction.swapTokenValue
* @param {string} swapTransaction.estimatedBaseFee
* @param {string} swapTransaction.approvalTxId
* @returns {TransactionMeta} the txMeta of the updated transaction
*/
updateSwapTransaction(
txId,
@ -534,7 +552,9 @@ export default class TransactionController extends EventEmitter {
},
) {
if (!this._checkIfTxStatusIsUnapproved(txId)) {
return;
throw new Error(
'Cannot call updateSwapTransaction on a transaction that is not in an unapproved state',
);
}
let swapTransaction = {
sourceTokenSymbol,
@ -553,6 +573,7 @@ export default class TransactionController extends EventEmitter {
const note = `Update Swap Transaction for ${txId}`;
this._updateTransaction(txId, swapTransaction, note);
return this._getTransaction(txId);
}
/**
@ -562,10 +583,13 @@ export default class TransactionController extends EventEmitter {
* @param {object} userSettings - holds the metadata
* @param {string} userSettings.userEditedGasLimit
* @param {string} userSettings.userFeeLevel
* @returns {TransactionMeta} the txMeta of the updated transaction
*/
updateTransactionUserSettings(txId, { userEditedGasLimit, userFeeLevel }) {
if (!this._checkIfTxStatusIsUnapproved(txId)) {
return;
throw new Error(
'Cannot call updateTransactionUserSettings on a transaction that is not in an unapproved state',
);
}
let userSettings = { userEditedGasLimit, userFeeLevel };
@ -574,6 +598,7 @@ export default class TransactionController extends EventEmitter {
const note = `Update User Settings for ${txId}`;
this._updateTransaction(txId, userSettings, note);
return this._getTransaction(txId);
}
// ====================================================================================================================================================

View File

@ -2186,7 +2186,7 @@ describe('Transaction Controller', function () {
assert.equal(result.userFeeLevel, 'high');
});
it('does not update if status is not unapproved', function () {
it('throws error if status is not unapproved', function () {
txStateManager.addTransaction({
id: '4',
status: TRANSACTION_STATUSES.APPROVED,
@ -2200,14 +2200,14 @@ describe('Transaction Controller', function () {
estimateUsed: '0x009',
});
txController.updateTransactionGasFees('4', { maxFeePerGas: '0x0088' });
let result = txStateManager.getTransaction('4');
assert.equal(result.txParams.maxFeePerGas, '0x008');
// test update estimate used
txController.updateTransactionGasFees('4', { estimateUsed: '0x0099' });
result = txStateManager.getTransaction('4');
assert.equal(result.estimateUsed, '0x009');
try {
txController.updateTransactionGasFees('4', { maxFeePerGas: '0x0088' });
} catch (e) {
assert.equal(
e.message,
'Cannot call updateTransactionGasFees on a transaction that is not in an unapproved state',
);
}
});
it('does not update unknown parameters in update method', function () {

View File

@ -673,8 +673,9 @@ const updateMetamaskStateFromBackground = () => {
export function updateSwapApprovalTransaction(txId, txSwapApproval) {
return async (dispatch) => {
let updatedTransaction;
try {
await promisifiedBackground.updateSwapApprovalTransaction(
updatedTransaction = await promisifiedBackground.updateSwapApprovalTransaction(
txId,
txSwapApproval,
);
@ -685,14 +686,18 @@ export function updateSwapApprovalTransaction(txId, txSwapApproval) {
throw error;
}
return txSwapApproval;
return updatedTransaction;
};
}
export function updateEditableParams(txId, editableParams) {
return async (dispatch) => {
let updatedTransaction;
try {
await promisifiedBackground.updateEditableParams(txId, editableParams);
updatedTransaction = await promisifiedBackground.updateEditableParams(
txId,
editableParams,
);
} catch (error) {
dispatch(txError(error));
dispatch(goHome());
@ -700,14 +705,18 @@ export function updateEditableParams(txId, editableParams) {
throw error;
}
return editableParams;
return updatedTransaction;
};
}
export function updateTransactionGasFees(txId, txGasFees) {
return async (dispatch) => {
let updatedTransaction;
try {
await promisifiedBackground.updateTransactionGasFees(txId, txGasFees);
updatedTransaction = await promisifiedBackground.updateTransactionGasFees(
txId,
txGasFees,
);
} catch (error) {
dispatch(txError(error));
dispatch(goHome());
@ -715,14 +724,18 @@ export function updateTransactionGasFees(txId, txGasFees) {
throw error;
}
return txGasFees;
return updatedTransaction;
};
}
export function updateSwapTransaction(txId, txSwap) {
return async (dispatch) => {
let updatedTransaction;
try {
await promisifiedBackground.updateSwapTransaction(txId, txSwap);
updatedTransaction = await promisifiedBackground.updateSwapTransaction(
txId,
txSwap,
);
} catch (error) {
dispatch(txError(error));
dispatch(goHome());
@ -730,7 +743,7 @@ export function updateSwapTransaction(txId, txSwap) {
throw error;
}
return txSwap;
return updatedTransaction;
};
}