Skip to content

Commit 6f81880

Browse files
feat: Configure pending transaction polling intervals using remote feature flags
1 parent 21201bc commit 6f81880

File tree

8 files changed

+344
-40
lines changed

8 files changed

+344
-40
lines changed

eslint-warning-thresholds.json

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -276,7 +276,6 @@
276276
"import-x/order": 1
277277
},
278278
"packages/multichain/src/adapters/caip-permission-adapter-eth-accounts.ts": {
279-
"@typescript-eslint/no-unsafe-enum-comparison": 1,
280279
"jsdoc/tag-lines": 5
281280
},
282281
"packages/multichain/src/adapters/caip-permission-adapter-permittedChains.test.ts": {
@@ -299,7 +298,6 @@
299298
"jsdoc/require-returns": 1
300299
},
301300
"packages/multichain/src/handlers/wallet-invokeMethod.ts": {
302-
"@typescript-eslint/no-unsafe-enum-comparison": 1,
303301
"@typescript-eslint/no-unused-vars": 1,
304302
"jsdoc/require-returns": 1
305303
},
@@ -324,9 +322,6 @@
324322
"packages/multichain/src/scope/assert.test.ts": {
325323
"@typescript-eslint/no-unused-vars": 3
326324
},
327-
"packages/multichain/src/scope/assert.ts": {
328-
"@typescript-eslint/no-unsafe-enum-comparison": 1
329-
},
330325
"packages/multichain/src/scope/authorization.test.ts": {
331326
"@typescript-eslint/no-unused-vars": 2
332327
},
@@ -340,9 +335,6 @@
340335
"@typescript-eslint/no-unused-vars": 1,
341336
"jsdoc/require-returns": 1
342337
},
343-
"packages/multichain/src/scope/supported.ts": {
344-
"@typescript-eslint/no-unsafe-enum-comparison": 6
345-
},
346338
"packages/multichain/src/scope/validation.ts": {
347339
"jsdoc/tag-lines": 2
348340
},

packages/transaction-controller/src/TransactionController.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3632,6 +3632,7 @@ export class TransactionController extends BaseController<
36323632
this.beforeCheckPendingTransaction.bind(this),
36333633
beforePublish: this.beforePublish.bind(this),
36343634
},
3635+
messenger: this.messagingSystem,
36353636
});
36363637

36373638
this.#addPendingTransactionTrackerListeners(pendingTransactionTracker);

packages/transaction-controller/src/helpers/PendingTransactionTracker.test.ts

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import { freeze } from 'immer';
55

66
import { PendingTransactionTracker } from './PendingTransactionTracker';
77
import { TransactionPoller } from './TransactionPoller';
8+
import type { TransactionControllerMessenger } from '../TransactionController';
89
import type { TransactionMeta } from '../types';
910
import { TransactionStatus } from '../types';
1011

@@ -74,11 +75,25 @@ function createTransactionPollerMock(): jest.Mocked<TransactionPoller> {
7475
} as unknown as jest.Mocked<TransactionPoller>;
7576
}
7677

78+
/**
79+
* Creates a mock messenger instance.
80+
*
81+
* @returns The mock messenger instance.
82+
*/
83+
function createMessengerMock(): jest.Mocked<TransactionControllerMessenger> {
84+
return {
85+
call: jest.fn().mockReturnValue({
86+
remoteFeatureFlags: {},
87+
}),
88+
} as unknown as jest.Mocked<TransactionControllerMessenger>;
89+
}
90+
7791
describe('PendingTransactionTracker', () => {
7892
const queryMock = jest.mocked(query);
7993
let blockTracker: jest.Mocked<BlockTracker>;
8094
let pendingTransactionTracker: PendingTransactionTracker;
8195
let transactionPoller: jest.Mocked<TransactionPoller>;
96+
let messenger: jest.Mocked<TransactionControllerMessenger>;
8297

8398
let options: jest.Mocked<
8499
ConstructorParameters<typeof PendingTransactionTracker>[0]
@@ -112,6 +127,7 @@ describe('PendingTransactionTracker', () => {
112127
beforeEach(() => {
113128
blockTracker = createBlockTrackerMock();
114129
transactionPoller = createTransactionPollerMock();
130+
messenger = createMessengerMock();
115131

116132
jest.mocked(TransactionPoller).mockImplementation(() => transactionPoller);
117133

@@ -123,6 +139,7 @@ describe('PendingTransactionTracker', () => {
123139
getTransactions: jest.fn(),
124140
getGlobalLock: jest.fn(() => Promise.resolve(jest.fn())),
125141
publishTransaction: jest.fn(),
142+
messenger,
126143
};
127144
});
128145

packages/transaction-controller/src/helpers/PendingTransactionTracker.ts

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import { cloneDeep, merge } from 'lodash';
1111

1212
import { TransactionPoller } from './TransactionPoller';
1313
import { createModuleLogger, projectLogger } from '../logger';
14+
import type { TransactionControllerMessenger } from '../TransactionController';
1415
import type { TransactionMeta, TransactionReceipt } from '../types';
1516
import { TransactionStatus, TransactionType } from '../types';
1617

@@ -107,6 +108,7 @@ export class PendingTransactionTracker {
107108
getGlobalLock,
108109
publishTransaction,
109110
hooks,
111+
messenger,
110112
}: {
111113
blockTracker: BlockTracker;
112114
getChainId: () => string;
@@ -125,6 +127,7 @@ export class PendingTransactionTracker {
125127
) => boolean;
126128
beforePublish?: (transactionMeta: TransactionMeta) => boolean;
127129
};
130+
messenger: TransactionControllerMessenger;
128131
}) {
129132
this.hub = new EventEmitter() as PendingTransactionTrackerEventEmitter;
130133

@@ -138,7 +141,11 @@ export class PendingTransactionTracker {
138141
this.#getGlobalLock = getGlobalLock;
139142
this.#publishTransaction = publishTransaction;
140143
this.#running = false;
141-
this.#transactionPoller = new TransactionPoller(blockTracker);
144+
this.#transactionPoller = new TransactionPoller(
145+
blockTracker,
146+
messenger,
147+
getChainId(),
148+
);
142149
this.#beforePublish = hooks?.beforePublish ?? (() => true);
143150
this.#beforeCheckPendingTransaction =
144151
hooks?.beforeCheckPendingTransaction ?? (() => true);

0 commit comments

Comments
 (0)