Skip to content

Commit b55fa2d

Browse files
authored
upgrade NetworkController to V20 (#395)
* upgrade NetworkController to V20 * fix lint * refactor onNetworkStateChange * revert the refactor * refactor onNetworkStateChange
1 parent 5f597cd commit b55fa2d

File tree

5 files changed

+47
-38
lines changed

5 files changed

+47
-38
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333
"@metamask/controller-utils": "^11.0.0",
3434
"@metamask/eth-json-rpc-provider": "^4.1.0",
3535
"@metamask/eth-query": "^4.0.0",
36-
"@metamask/network-controller": "^19.0.0",
36+
"@metamask/network-controller": "^20.0.0",
3737
"@metamask/polling-controller": "^8.0.0",
3838
"@metamask/transaction-controller": "^34.0.0",
3939
"bignumber.js": "^9.0.1",

src/SmartTransactionsController.test.ts

Lines changed: 10 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -348,16 +348,8 @@ const defaultState = {
348348
},
349349
};
350350

351-
const mockProviderConfig = {
352-
chainId: ChainId.mainnet,
353-
provider: getFakeProvider(),
354-
type: NetworkType.mainnet,
355-
ticker: 'ticker',
356-
};
357-
358351
const mockNetworkState = {
359-
providerConfig: mockProviderConfig,
360-
selectedNetworkClientId: 'id',
352+
selectedNetworkClientId: NetworkType.mainnet,
361353
networkConfigurations: {
362354
id: {
363355
id: 'id',
@@ -393,7 +385,6 @@ describe('SmartTransactionsController', () => {
393385
releaseLock: jest.fn(),
394386
};
395387
}),
396-
provider: getFakeProvider(),
397388
confirmExternalTransaction: jest.fn(),
398389
getTransactions: jest.fn(),
399390
trackMetaMetricsEvent: trackMetaMetricsEventSpy,
@@ -404,12 +395,14 @@ describe('SmartTransactionsController', () => {
404395
configuration: {
405396
chainId: ChainId.mainnet,
406397
},
398+
provider: getFakeProvider(),
407399
};
408400
case NetworkType.sepolia:
409401
return {
410402
configuration: {
411403
chainId: ChainId.sepolia,
412404
},
405+
provider: getFakeProvider(),
413406
};
414407
default:
415408
throw new Error('Invalid network client id');
@@ -451,19 +444,17 @@ describe('SmartTransactionsController', () => {
451444
describe('onNetworkChange', () => {
452445
it('is triggered', () => {
453446
networkListener({
454-
providerConfig: { chainId: '0x32', type: 'rpc', ticker: 'CET' },
455-
selectedNetworkClientId: 'networkClientId',
447+
selectedNetworkClientId: NetworkType.sepolia,
456448
networkConfigurations: {},
457449
networksMetadata: {},
458450
} as NetworkState);
459-
expect(smartTransactionsController.config.chainId).toBe('0x32');
451+
expect(smartTransactionsController.config.chainId).toBe(ChainId.sepolia);
460452
});
461453

462454
it('calls poll', () => {
463455
const checkPollSpy = jest.spyOn(smartTransactionsController, 'checkPoll');
464456
networkListener({
465-
providerConfig: { chainId: '0x32', type: 'rpc', ticker: 'CET' },
466-
selectedNetworkClientId: 'networkClientId',
457+
selectedNetworkClientId: NetworkType.sepolia,
467458
networkConfigurations: {},
468459
networksMetadata: {},
469460
} as NetworkState);
@@ -489,12 +480,7 @@ describe('SmartTransactionsController', () => {
489480
});
490481
smartTransactionsController.config.chainId = ChainId.sepolia;
491482
networkListener({
492-
providerConfig: {
493-
chainId: ChainId.mainnet,
494-
type: 'rpc',
495-
ticker: 'ETH',
496-
},
497-
selectedNetworkClientId: 'networkClientId',
483+
selectedNetworkClientId: NetworkType.mainnet,
498484
networkConfigurations: {},
499485
networksMetadata: {},
500486
} as NetworkState);
@@ -525,12 +511,7 @@ describe('SmartTransactionsController', () => {
525511
},
526512
});
527513
networkListener({
528-
providerConfig: {
529-
chainId: ChainId.mainnet,
530-
type: 'rpc',
531-
ticker: 'ETH',
532-
},
533-
selectedNetworkClientId: 'networkClientId',
514+
selectedNetworkClientId: NetworkType.mainnet,
534515
networkConfigurations: {},
535516
networksMetadata: {},
536517
} as NetworkState);
@@ -580,9 +561,9 @@ describe('SmartTransactionsController', () => {
580561
'updateSmartTransactions',
581562
);
582563
expect(updateSmartTransactionsSpy).not.toHaveBeenCalled();
564+
smartTransactionsController.config.supportedChainIds = [ChainId.mainnet];
583565
networkListener({
584-
providerConfig: { chainId: '0x32', type: 'rpc', ticker: 'CET' },
585-
selectedNetworkClientId: 'networkClientId',
566+
selectedNetworkClientId: NetworkType.sepolia,
586567
networkConfigurations: {},
587568
networksMetadata: {},
588569
} as NetworkState);

src/SmartTransactionsController.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
import { hexlify } from '@ethersproject/bytes';
33
import type { BaseConfig, BaseState } from '@metamask/base-controller';
44
import { query, safelyExecute, ChainId } from '@metamask/controller-utils';
5-
import type { SafeEventEmitterProvider } from '@metamask/eth-json-rpc-provider';
65
import EthQuery from '@metamask/eth-query';
76
import type {
87
NetworkClientId,
@@ -122,7 +121,6 @@ export default class SmartTransactionsController extends StaticIntervalPollingCo
122121
{
123122
onNetworkStateChange,
124123
getNonceLock,
125-
provider,
126124
confirmExternalTransaction,
127125
getTransactions,
128126
trackMetaMetricsEvent,
@@ -133,7 +131,6 @@ export default class SmartTransactionsController extends StaticIntervalPollingCo
133131
listener: (networkState: NetworkState) => void,
134132
) => void;
135133
getNonceLock: any;
136-
provider: SafeEventEmitterProvider;
137134
confirmExternalTransaction: any;
138135
getTransactions: (options?: GetTransactionsOptions) => TransactionMeta[];
139136
trackMetaMetricsEvent: any;
@@ -192,8 +189,11 @@ export default class SmartTransactionsController extends StaticIntervalPollingCo
192189
this.initializeSmartTransactionsForChainId();
193190
this.#ensureUniqueSmartTransactions();
194191

195-
onNetworkStateChange(({ providerConfig: newProvider }) => {
196-
const { chainId } = newProvider;
192+
onNetworkStateChange(({ selectedNetworkClientId }) => {
193+
const {
194+
configuration: { chainId },
195+
provider,
196+
} = this.getNetworkClientById(selectedNetworkClientId);
197197
const isNewChainId = chainId !== this.config.chainId;
198198
this.configure({ chainId });
199199
this.initializeSmartTransactionsForChainId();

src/index.test.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,12 @@
11
import DefaultExport from '.';
22
import SmartTransactionsController from './SmartTransactionsController';
3-
import { getFakeProvider } from './test-helpers';
43

54
describe('default export', () => {
65
it('exports SmartTransactionsController', () => {
76
jest.useFakeTimers();
87
const controller = new DefaultExport({
98
onNetworkStateChange: jest.fn(),
109
getNonceLock: null,
11-
provider: getFakeProvider(),
1210
confirmExternalTransaction: jest.fn(),
1311
getTransactions: jest.fn(),
1412
trackMetaMetricsEvent: jest.fn(),

yarn.lock

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1893,6 +1893,29 @@ __metadata:
18931893
languageName: node
18941894
linkType: hard
18951895

1896+
"@metamask/network-controller@npm:^20.0.0":
1897+
version: 20.0.0
1898+
resolution: "@metamask/network-controller@npm:20.0.0"
1899+
dependencies:
1900+
"@metamask/base-controller": ^6.0.0
1901+
"@metamask/controller-utils": ^11.0.0
1902+
"@metamask/eth-block-tracker": ^9.0.3
1903+
"@metamask/eth-json-rpc-infura": ^9.1.0
1904+
"@metamask/eth-json-rpc-middleware": ^12.1.1
1905+
"@metamask/eth-json-rpc-provider": ^4.1.0
1906+
"@metamask/eth-query": ^4.0.0
1907+
"@metamask/json-rpc-engine": ^9.0.0
1908+
"@metamask/rpc-errors": ^6.2.1
1909+
"@metamask/swappable-obj-proxy": ^2.2.0
1910+
"@metamask/utils": ^8.3.0
1911+
async-mutex: ^0.5.0
1912+
immer: ^9.0.6
1913+
loglevel: ^1.8.1
1914+
uuid: ^8.3.2
1915+
checksum: 27a4b669655d4566045de5489d9bc8fee8454f2e74ddc844c0c978a5af6b821c0bdf020b9b649db32f07a298006c021e33e6d29ccf64a6f6301a8e80de21000c
1916+
languageName: node
1917+
linkType: hard
1918+
18961919
"@metamask/nonce-tracker@npm:^5.0.0":
18971920
version: 5.0.0
18981921
resolution: "@metamask/nonce-tracker@npm:5.0.0"
@@ -2087,7 +2110,7 @@ __metadata:
20872110
"@metamask/eth-json-rpc-provider": ^4.1.0
20882111
"@metamask/eth-query": ^4.0.0
20892112
"@metamask/json-rpc-engine": ^9.0.0
2090-
"@metamask/network-controller": ^19.0.0
2113+
"@metamask/network-controller": ^20.0.0
20912114
"@metamask/polling-controller": ^8.0.0
20922115
"@metamask/transaction-controller": ^34.0.0
20932116
"@types/jest": ^26.0.24
@@ -6738,6 +6761,13 @@ __metadata:
67386761
languageName: node
67396762
linkType: hard
67406763

6764+
"loglevel@npm:^1.8.1":
6765+
version: 1.9.1
6766+
resolution: "loglevel@npm:1.9.1"
6767+
checksum: e1c8586108c4d566122e91f8a79c8df728920e3a714875affa5120566761a24077ec8ec9e5fc388b022e39fc411ec6e090cde1b5775871241b045139771eeb06
6768+
languageName: node
6769+
linkType: hard
6770+
67416771
"lru-cache@npm:^5.1.1":
67426772
version: 5.1.1
67436773
resolution: "lru-cache@npm:5.1.1"

0 commit comments

Comments
 (0)