mirror of
https://github.com/kremalicious/metamask-extension.git
synced 2024-12-23 09:52:26 +01:00
Move infuraProjectId
to network controller constructor (#16884)
The network controller `setInfuraProjectId` method has been deleted. The Infura project ID is only ever set upon construction, so it is now passed in as a constructor parameter instead. Rather than adding this as a second parameter, the network controller now uses an "options bag" for constructor parameters. The initial state was the first parameter, but it's now passed in as the `state` option instead. These changes make the API more similar to the mobile network controller API. This should have zero functional changes. This relates to https://github.com/MetaMask/controllers/issues/971 Co-authored-by: legobeat <109787230+legobeat@users.noreply.github.com>
This commit is contained in:
parent
659063b335
commit
6d64951938
@ -33,8 +33,7 @@ describe('DetectTokensController', function () {
|
|||||||
|
|
||||||
beforeEach(async function () {
|
beforeEach(async function () {
|
||||||
keyringMemStore = new ObservableStore({ isUnlocked: false });
|
keyringMemStore = new ObservableStore({ isUnlocked: false });
|
||||||
network = new NetworkController();
|
network = new NetworkController({ infuraProjectId: 'foo' });
|
||||||
network.setInfuraProjectId('foo');
|
|
||||||
network.initializeProvider(networkControllerProviderConfig);
|
network.initializeProvider(networkControllerProviderConfig);
|
||||||
provider = network.getProviderAndBlockTracker().provider;
|
provider = network.getProviderAndBlockTracker().provider;
|
||||||
|
|
||||||
|
@ -13,11 +13,10 @@ describe('NetworkController', () => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
networkController = new NetworkController();
|
networkController = new NetworkController({ infuraProjectId: 'foo' });
|
||||||
getLatestBlockStub = sinon
|
getLatestBlockStub = sinon
|
||||||
.stub(networkController, 'getLatestBlock')
|
.stub(networkController, 'getLatestBlock')
|
||||||
.callsFake(() => Promise.resolve({}));
|
.callsFake(() => Promise.resolve({}));
|
||||||
networkController.setInfuraProjectId('foo');
|
|
||||||
setProviderTypeAndWait = () =>
|
setProviderTypeAndWait = () =>
|
||||||
new Promise((resolve) => {
|
new Promise((resolve) => {
|
||||||
networkController.on(NETWORK_EVENTS.NETWORK_DID_CHANGE, () => {
|
networkController.on(NETWORK_EVENTS.NETWORK_DID_CHANGE, () => {
|
||||||
|
@ -71,12 +71,19 @@ export const NETWORK_EVENTS = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
export default class NetworkController extends EventEmitter {
|
export default class NetworkController extends EventEmitter {
|
||||||
constructor(opts = {}) {
|
/**
|
||||||
|
* Construct a NetworkController.
|
||||||
|
*
|
||||||
|
* @param {object} [options] - NetworkController options.
|
||||||
|
* @param {object} [options.state] - Initial controller state.
|
||||||
|
* @param {string} [options.infuraProjectId] - The Infura project ID.
|
||||||
|
*/
|
||||||
|
constructor({ state = {}, infuraProjectId } = {}) {
|
||||||
super();
|
super();
|
||||||
|
|
||||||
// create stores
|
// create stores
|
||||||
this.providerStore = new ObservableStore(
|
this.providerStore = new ObservableStore(
|
||||||
opts.provider || { ...defaultProviderConfig },
|
state.provider || { ...defaultProviderConfig },
|
||||||
);
|
);
|
||||||
this.previousProviderStore = new ObservableStore(
|
this.previousProviderStore = new ObservableStore(
|
||||||
this.providerStore.getState(),
|
this.providerStore.getState(),
|
||||||
@ -88,7 +95,7 @@ export default class NetworkController extends EventEmitter {
|
|||||||
// state. Currently this is only used for detecting EIP 1559 support but
|
// state. Currently this is only used for detecting EIP 1559 support but
|
||||||
// can be extended to track other network details.
|
// can be extended to track other network details.
|
||||||
this.networkDetails = new ObservableStore(
|
this.networkDetails = new ObservableStore(
|
||||||
opts.networkDetails || {
|
state.networkDetails || {
|
||||||
...defaultNetworkDetailsState,
|
...defaultNetworkDetailsState,
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
@ -107,21 +114,12 @@ export default class NetworkController extends EventEmitter {
|
|||||||
this._providerProxy = null;
|
this._providerProxy = null;
|
||||||
this._blockTrackerProxy = null;
|
this._blockTrackerProxy = null;
|
||||||
|
|
||||||
this.on(NETWORK_EVENTS.NETWORK_DID_CHANGE, this.lookupNetwork);
|
if (!infuraProjectId || typeof infuraProjectId !== 'string') {
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Sets the Infura project ID
|
|
||||||
*
|
|
||||||
* @param {string} projectId - The Infura project ID
|
|
||||||
* @throws {Error} If the project ID is not a valid string.
|
|
||||||
*/
|
|
||||||
setInfuraProjectId(projectId) {
|
|
||||||
if (!projectId || typeof projectId !== 'string') {
|
|
||||||
throw new Error('Invalid Infura project ID');
|
throw new Error('Invalid Infura project ID');
|
||||||
}
|
}
|
||||||
|
this._infuraProjectId = infuraProjectId;
|
||||||
|
|
||||||
this._infuraProjectId = projectId;
|
this.on(NETWORK_EVENTS.NETWORK_DID_CHANGE, this.lookupNetwork);
|
||||||
}
|
}
|
||||||
|
|
||||||
initializeProvider(providerParams) {
|
initializeProvider(providerParams) {
|
||||||
|
@ -20,8 +20,7 @@ describe('preferences controller', function () {
|
|||||||
const networkControllerProviderConfig = {
|
const networkControllerProviderConfig = {
|
||||||
getAccounts: () => undefined,
|
getAccounts: () => undefined,
|
||||||
};
|
};
|
||||||
network = new NetworkController();
|
network = new NetworkController({ infuraProjectId: 'foo' });
|
||||||
network.setInfuraProjectId('foo');
|
|
||||||
network.initializeProvider(networkControllerProviderConfig);
|
network.initializeProvider(networkControllerProviderConfig);
|
||||||
provider = network.getProviderAndBlockTracker().provider;
|
provider = network.getProviderAndBlockTracker().provider;
|
||||||
const tokenListMessenger = new ControllerMessenger().getRestricted({
|
const tokenListMessenger = new ControllerMessenger().getRestricted({
|
||||||
|
@ -244,8 +244,10 @@ export default class MetamaskController extends EventEmitter {
|
|||||||
showApprovalRequest: opts.showUserConfirmation,
|
showApprovalRequest: opts.showUserConfirmation,
|
||||||
});
|
});
|
||||||
|
|
||||||
this.networkController = new NetworkController(initState.NetworkController);
|
this.networkController = new NetworkController({
|
||||||
this.networkController.setInfuraProjectId(opts.infuraProjectId);
|
state: initState.NetworkController,
|
||||||
|
infuraProjectId: opts.infuraProjectId,
|
||||||
|
});
|
||||||
|
|
||||||
// now we can initialize the RPC provider, which other controllers require
|
// now we can initialize the RPC provider, which other controllers require
|
||||||
this.initializeProvider();
|
this.initializeProvider();
|
||||||
|
Loading…
Reference in New Issue
Block a user