Skip to content
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
deprecate history and sendFlowHistory
  • Loading branch information
vinistevam committed Dec 11, 2025
commit 5b439b5b02349dbb347a0a213028a0c84ced9eda
Original file line number Diff line number Diff line change
Expand Up @@ -1851,6 +1851,7 @@ describe('Bridge Status Controller Transaction Utils', () => {
id: 'tx1',
type: TransactionType.swap,
}),
'Update tx type to swap',
);

// Should update the approval transaction
Expand All @@ -1859,6 +1860,7 @@ describe('Bridge Status Controller Transaction Utils', () => {
id: 'tx2',
type: TransactionType.swapApproval,
}),
'Update tx type to swapApproval',
);
});

Expand Down Expand Up @@ -1893,6 +1895,7 @@ describe('Bridge Status Controller Transaction Utils', () => {
id: 'tx1',
type: TransactionType.swap,
}),
'Update tx type to swap',
);
});

Expand Down Expand Up @@ -1926,6 +1929,7 @@ describe('Bridge Status Controller Transaction Utils', () => {
id: 'tx1',
type: TransactionType.swapApproval,
}),
'Update tx type to swapApproval',
);
});

Expand Down Expand Up @@ -1963,13 +1967,15 @@ describe('Bridge Status Controller Transaction Utils', () => {
id: 'tx1',
type: TransactionType.bridge,
}),
'Update tx type to bridge',
);

expect(mockUpdateTransactionFn).toHaveBeenCalledWith(
expect.objectContaining({
id: 'tx2',
type: TransactionType.bridgeApproval,
}),
'Update tx type to bridgeApproval',
);
});

Expand Down
2 changes: 1 addition & 1 deletion packages/bridge-status-controller/src/utils/transaction.ts
Original file line number Diff line number Diff line change
Expand Up @@ -440,7 +440,7 @@ export const findAndUpdateTransactionsInBatch = ({

if (txMeta) {
const updatedTx = { ...txMeta, type: txType as TransactionType };
updateTransactionFn(updatedTx);
updateTransactionFn(updatedTx, `Update tx type to ${txType}`);
txBatch[
[TransactionType.bridgeApproval, TransactionType.swapApproval].includes(
txType as TransactionType,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5812,6 +5812,7 @@ describe('TransactionController', () => {
expect.objectContaining({
txParams: expect.objectContaining(paramsMock),
}),
'TransactionController#signTransaction - Update after sign',
);

expect(transactionMeta.status).toBe(TransactionStatus.approved);
Expand Down Expand Up @@ -5878,6 +5879,7 @@ describe('TransactionController', () => {
expect.objectContaining({
txParams: expect.objectContaining(paramsMock),
}),
'TransactionController#signTransaction - Update after sign',
);
});

Expand Down Expand Up @@ -6391,7 +6393,7 @@ describe('TransactionController', () => {

it('throws if custodial transaction does not exists', async () => {
const nonExistentId = 'nonExistentId';
const newStatus = TransactionStatus.approved;
const newStatus = TransactionStatus.approved as const;
const { controller } = setupController();

expect(() =>
Expand All @@ -6405,7 +6407,7 @@ describe('TransactionController', () => {
});

it('throws if status is invalid', async () => {
const newStatus = TransactionStatus.approved;
const newStatus = TransactionStatus.approved as const;
const { controller } = setupController({
options: {
state: {
Expand Down Expand Up @@ -8116,6 +8118,7 @@ describe('TransactionController', () => {
messenger.call(
'TransactionController:updateTransaction',
updatedTransaction,
'Test update note',
);

expect(controller.state.transactions[0].txParams.value).toBe('0x1');
Expand Down
75 changes: 63 additions & 12 deletions packages/transaction-controller/src/TransactionController.ts
Original file line number Diff line number Diff line change
Expand Up @@ -337,6 +337,7 @@ export type TransactionControllerGetTransactionsAction = {
* Updates an existing transaction in state.
*
* @param transactionMeta - The new transaction to store in state.
* @param note - A note or update reason to be logged.
*/
export type TransactionControllerUpdateTransactionAction = {
type: `${typeof controllerName}:updateTransaction`;
Expand Down Expand Up @@ -410,6 +411,12 @@ export type PendingTransactionOptions = {

/** TransactionController constructor options. */
export type TransactionControllerOptions = {
/** @deprecated Whether to disable storing history in transaction metadata. */
Copy link
Member

@matthewwalsh0 matthewwalsh0 Dec 11, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we update all the deprecated comments to just confirm No longer used for example?

disableHistory: boolean;

/** @deprecated Explicitly disable transaction metadata history. */
disableSendFlowHistory: boolean;

/** Whether to disable additional processing on swaps transactions. */
disableSwaps: boolean;

Expand Down Expand Up @@ -497,6 +504,9 @@ export type TransactionControllerOptions = {
testGasFeeFlows?: boolean;
trace?: TraceCallback;

/** @deprecated Transaction history limit. */
transactionHistoryLimit: number;

/** The controller hooks. */
hooks: {
/** Additional logic to execute after adding a transaction. */
Expand Down Expand Up @@ -899,13 +909,17 @@ export class TransactionController extends BaseController<

readonly #trace: TraceCallback;

// readonly #transactionHistoryLimit: number;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This isn't related to the history properties, but how many transactions we retain. We need to keep this.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

reverted a changes related with transactionHistoryLimit


/**
* Constructs a TransactionController.
*
* @param options - The controller options.
*/
constructor(options: TransactionControllerOptions) {
const {
disableHistory,
disableSendFlowHistory,
disableSwaps,
getCurrentAccountEIP1559Compatibility,
getCurrentNetworkEIP1559Compatibility,
Expand All @@ -930,6 +944,7 @@ export class TransactionController extends BaseController<
state,
testGasFeeFlows,
trace,
transactionHistoryLimit = 40,
} = options;

super({
Expand Down Expand Up @@ -1737,13 +1752,16 @@ export class TransactionController extends BaseController<
* Updates an existing transaction in state.
*
* @param transactionMeta - The new transaction to store in state.
* @param note - A note or update reason to be logged.
*/
updateTransaction(transactionMeta: TransactionMeta) {
updateTransaction(transactionMeta: TransactionMeta, note: string) {
const { id: transactionId } = transactionMeta;

this.#updateTransactionInternal({ transactionId }, () => ({
...transactionMeta,
}));

log(`Transaction ${transactionId} updated. ${note}`);
}

/**
Expand Down Expand Up @@ -1771,7 +1789,10 @@ export class TransactionController extends BaseController<
...transactionMeta,
securityAlertResponse,
};
this.updateTransaction(updatedTransactionMeta);
this.updateTransaction(
updatedTransactionMeta,
`${controllerName}:updatesecurityAlertResponse - securityAlertResponse updated`,
);
}

/**
Expand Down Expand Up @@ -1851,7 +1872,10 @@ export class TransactionController extends BaseController<
this.#markNonceDuplicatesDropped(transactionId);

// Update external provided transaction with updated gas values and confirmed status.
this.updateTransaction(updatedTransactionMeta);
this.updateTransaction(
updatedTransactionMeta,
`${controllerName}:confirmExternalTransaction - Add external transaction`,
);
this.#onTransactionStatusChange(updatedTransactionMeta);

// Intentional given potential duration of process.
Expand Down Expand Up @@ -2048,7 +2072,10 @@ export class TransactionController extends BaseController<
// merge updated previous gas values with existing transaction meta
const updatedMeta = merge({}, transactionMeta, transactionPreviousGas);

this.updateTransaction(updatedMeta);
this.updateTransaction(
updatedMeta,
`${controllerName}:updatePreviousGasParams - Previous gas values updated`,
);

return this.#getTransaction(transactionId) as TransactionMeta;
}
Expand Down Expand Up @@ -2159,7 +2186,10 @@ export class TransactionController extends BaseController<
transactionMeta: updatedTransaction,
});

this.updateTransaction(updatedTransaction);
this.updateTransaction(
updatedTransaction,
`Update Editable Params for ${txId}`,
);

return this.#getTransaction(txId);
}
Expand Down Expand Up @@ -2332,7 +2362,10 @@ export class TransactionController extends BaseController<
delete updatedTransactionMeta.txParams.maxPriorityFeePerGas;
}

this.updateTransaction(updatedTransactionMeta);
this.updateTransaction(
updatedTransactionMeta,
`${controllerName}:updateCustodialTransaction - Custodial transaction updated`,
);

if (
status &&
Expand Down Expand Up @@ -2800,7 +2833,10 @@ export class TransactionController extends BaseController<
});
}

this.updateTransaction(updatedTransactionMeta);
this.updateTransaction(
updatedTransactionMeta,
'Generated from user operation',
);

this.messenger.publish('TransactionController:transactionStatusUpdated', {
transactionMeta: updatedTransactionMeta,
Expand Down Expand Up @@ -2955,7 +2991,10 @@ export class TransactionController extends BaseController<
params: updatedTransaction.txParams,
});

this.updateTransaction(updatedTransaction);
this.updateTransaction(
updatedTransaction,
'TransactionController#processApproval - Updated with approval data',
);
}
}

Expand Down Expand Up @@ -3586,7 +3625,10 @@ export class TransactionController extends BaseController<
this.messenger.publish(`${controllerName}:transactionDropped`, {
transactionMeta: updatedTransactionMeta,
});
this.updateTransaction(updatedTransactionMeta);
this.updateTransaction(
updatedTransactionMeta,
'TransactionController#setTransactionStatusDropped - Transaction dropped',
);
this.#onTransactionStatusChange(updatedTransactionMeta);
}

Expand Down Expand Up @@ -3739,7 +3781,10 @@ export class TransactionController extends BaseController<
const transactionMetaFromHook = cloneDeep(finalTransactionMeta);

if (!this.#afterSign(transactionMetaFromHook, signedTx)) {
this.updateTransaction(transactionMetaFromHook);
this.updateTransaction(
transactionMetaFromHook,
'TransactionController#signTransaction - Update after sign',
);

log('Skipping signed status based on hook');

Expand All @@ -3752,7 +3797,10 @@ export class TransactionController extends BaseController<
txParams: finalTxParams,
};

this.updateTransaction(transactionMetaWithRsv);
this.updateTransaction(
transactionMetaWithRsv,
'TransactionController#approveTransaction - Transaction signed',
);

this.#onTransactionStatusChange(transactionMetaWithRsv);

Expand All @@ -3762,7 +3810,10 @@ export class TransactionController extends BaseController<
rawTx,
});

this.updateTransaction(transactionMetaWithRawTx);
this.updateTransaction(
transactionMetaWithRawTx,
'TransactionController#approveTransaction - RawTransaction added',
);

return rawTx;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -273,6 +273,8 @@ const setupController = async (
);

const options: TransactionControllerOptions = {
disableHistory: false,
disableSendFlowHistory: false,
disableSwaps: false,
isAutomaticGasFeeUpdateEnabled: () => true,
getCurrentNetworkEIP1559Compatibility: async (
Expand All @@ -293,6 +295,7 @@ const setupController = async (
isResubmitEnabled: () => false,
},
sign: async (transaction: TypedTransaction) => transaction,
transactionHistoryLimit: 40,
...givenOptions,
};

Expand Down
3 changes: 3 additions & 0 deletions packages/transaction-controller/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,7 @@ export type {
SavedGasFees,
SecurityAlertResponse,
SecurityProviderRequest,
SendFlowHistoryEntry,
SimulationBalanceChange,
SimulationData,
SimulationError,
Expand All @@ -86,6 +87,8 @@ export type {
TransactionBatchRequest,
TransactionBatchResult,
TransactionError,
TransactionHistory,
TransactionHistoryEntry,
TransactionMeta,
TransactionParams,
TransactionReceipt,
Expand Down
Loading