Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

chore(deps): bump assets controller to v34.0.0 #25540

Merged
merged 12 commits into from
Jun 28, 2024
150 changes: 36 additions & 114 deletions app/scripts/metamask-controller.js
Original file line number Diff line number Diff line change
Expand Up @@ -517,12 +517,6 @@ export default class MetamaskController extends EventEmitter {
this.networkController.getProviderAndBlockTracker().blockTracker;
this.deprecatedNetworkVersions = {};

const tokenListMessenger = this.controllerMessenger.getRestricted({
name: 'TokenListController',
allowedEvents: ['NetworkController:stateChange'],
allowedActions: ['NetworkController:getNetworkClientById'],
});

const accountsControllerMessenger = this.controllerMessenger.getRestricted({
name: 'AccountsController',
allowedEvents: [
Expand Down Expand Up @@ -560,6 +554,12 @@ export default class MetamaskController extends EventEmitter {
networkConfigurations: this.networkController.state.networkConfigurations,
});

const tokenListMessenger = this.controllerMessenger.getRestricted({
name: 'TokenListController',
allowedActions: ['NetworkController:getNetworkClientById'],
allowedEvents: ['NetworkController:stateChange'],
});

this.tokenListController = new TokenListController({
chainId: this.networkController.state.providerConfig.chainId,
preventPollingOnNetworkRestart: !this.#isTokenListPollingRequired(
Expand Down Expand Up @@ -597,49 +597,21 @@ export default class MetamaskController extends EventEmitter {
allowedActions: [
'ApprovalController:addRequest',
'NetworkController:getNetworkClientById',
'AccountsController:getSelectedAccount',
'AccountsController:getAccount',
],
allowedEvents: [
'NetworkController:networkDidChange',
'AccountsController:selectedAccountChange',
'AccountsController:selectedEvmAccountChange',
'PreferencesController:stateChange',
'TokenListController:stateChange',
],
});
this.tokensController = new TokensController({
state: initState.TokensController,
provider: this.provider,
messenger: tokensControllerMessenger,
chainId: this.networkController.state.providerConfig.chainId,
// TODO: The tokens controller currently does not support internalAccounts. This is done to match the behavior of the previous tokens controller subscription.
onPreferencesStateChange: (listener) =>
this.controllerMessenger.subscribe(
`AccountsController:selectedAccountChange`,
(newlySelectedInternalAccount) => {
listener({ selectedAddress: newlySelectedInternalAccount.address });
},
),
onNetworkDidChange: (cb) =>
networkControllerMessenger.subscribe(
'NetworkController:networkDidChange',
() => {
const networkState = this.networkController.state;
return cb(networkState);
},
),
onTokenListStateChange: (listener) =>
this.controllerMessenger.subscribe(
`${this.tokenListController.name}:stateChange`,
listener,
),
getNetworkClientById: this.networkController.getNetworkClientById.bind(
this.networkController,
),
config: {
provider: this.provider,
selectedAddress:
initState.AccountsController?.internalAccounts?.accounts[
initState.AccountsController?.internalAccounts?.selectedAccount
]?.address ?? '',
},
state: initState.TokensController,
});

const nftControllerMessenger = this.controllerMessenger.getRestricted({
Expand All @@ -657,15 +629,9 @@ export default class MetamaskController extends EventEmitter {
],
});
this.nftController = new NftController({
state: initState.NftController,
messenger: nftControllerMessenger,
chainId: this.networkController.state.providerConfig.chainId,
onPreferencesStateChange: this.preferencesController.store.subscribe.bind(
this.preferencesController.store,
),
onNetworkStateChange: networkControllerMessenger.subscribe.bind(
networkControllerMessenger,
'NetworkController:stateChange',
),
getERC721AssetName: this.assetsContractController.getERC721AssetName.bind(
this.assetsContractController,
),
Expand Down Expand Up @@ -699,10 +665,6 @@ export default class MetamaskController extends EventEmitter {
source,
},
}),
getNetworkClientById: this.networkController.getNetworkClientById.bind(
this.networkController,
),
state: initState.NftController,
});

this.nftController.setApiKey(process.env.OPENSEA_KEY);
Expand All @@ -711,48 +673,33 @@ export default class MetamaskController extends EventEmitter {
this.controllerMessenger.getRestricted({
name: 'NftDetectionController',
allowedEvents: [
'PreferencesController:stateChange',
'NetworkController:stateChange',
'PreferencesController:stateChange',
],
allowedActions: [
'ApprovalController:addRequest',
'NetworkController:getState',
'NetworkController:getNetworkClientById',
'PreferencesController:getState',
'AccountsController:getSelectedAccount',
],
});

this.nftDetectionController = new NftDetectionController({
messenger: nftDetectionControllerMessenger,
chainId: this.networkController.state.providerConfig.chainId,
onNftsStateChange: (listener) => this.nftController.subscribe(listener),
onPreferencesStateChange: this.preferencesController.store.subscribe.bind(
this.preferencesController.store,
),
onNetworkStateChange: networkControllerMessenger.subscribe.bind(
networkControllerMessenger,
'NetworkController:stateChange',
),
getOpenSeaApiKey: () => this.nftController.openSeaApiKey,
getBalancesInSingleCall:
this.assetsContractController.getBalancesInSingleCall.bind(
this.assetsContractController,
),
addNft: this.nftController.addNft.bind(this.nftController),
getNftApi: this.nftController.getNftApi.bind(this.nftController),
getNftState: () => this.nftController.state,
// added this to track previous value of useNftDetection, should be true on very first initializing of controller[]
disabled:
this.preferencesController.store.getState().useNftDetection ===
undefined
? false // the detection is enabled by default
: !this.preferencesController.store.getState().useNftDetection,
selectedAddress:
this.preferencesController.store.getState().selectedAddress,
getNetworkClientById: this.networkController.getNetworkClientById.bind(
this.networkController,
),
});

this.metaMetricsController = new MetaMetricsController({
Expand Down Expand Up @@ -946,55 +893,29 @@ export default class MetamaskController extends EventEmitter {
fetchMultiExchangeRate,
});

const tokenRatesControllerMessenger =
this.controllerMessenger.getRestricted({
name: 'TokenRatesController',
allowedEvents: [
'PreferencesController:stateChange',
'TokensController:stateChange',
'NetworkController:stateChange',
],
allowedActions: [
'TokensController:getState',
'NetworkController:getNetworkClientById',
'NetworkController:getState',
'PreferencesController:getState',
],
});
const tokenRatesMessenger = this.controllerMessenger.getRestricted({
name: 'TokenRatesController',
allowedActions: [
'TokensController:getState',
'NetworkController:getNetworkClientById',
'NetworkController:getState',
'AccountsController:getAccount',
'AccountsController:getSelectedAccount',
],
allowedEvents: [
'NetworkController:stateChange',
'AccountsController:selectedEvmAccountChange',
'PreferencesController:stateChange',
'TokensController:stateChange',
],
});

// token exchange rate tracker
this.tokenRatesController = new TokenRatesController(
{
messenger: tokenRatesControllerMessenger,
chainId: this.networkController.state.providerConfig.chainId,
ticker: this.networkController.state.providerConfig.ticker,
selectedAddress: this.accountsController.getSelectedAccount().address,
onTokensStateChange: (listener) =>
this.tokensController.subscribe(listener),
onNetworkStateChange: networkControllerMessenger.subscribe.bind(
networkControllerMessenger,
'NetworkController:stateChange',
),
onPreferencesStateChange: (listener) =>
this.controllerMessenger.subscribe(
`AccountsController:selectedAccountChange`,
(newlySelectedInternalAccount) => {
listener({
selectedAddress: newlySelectedInternalAccount.address,
});
},
),
tokenPricesService: new CodefiTokenPricesServiceV2(),
getNetworkClientById: this.networkController.getNetworkClientById.bind(
this.networkController,
),
},
{
allTokens: this.tokensController.state.allTokens,
allDetectedTokens: this.tokensController.state.allDetectedTokens,
},
initState.TokenRatesController,
);
this.tokenRatesController = new TokenRatesController({
state: initState.TokenRatesController,
messenger: tokenRatesMessenger,
tokenPricesService: new CodefiTokenPricesServiceV2(),
});

this.preferencesController.store.subscribe(
previousValueComparator((prevState, currState) => {
Expand Down Expand Up @@ -1621,6 +1542,7 @@ export default class MetamaskController extends EventEmitter {
this.controllerMessenger.getRestricted({
name: 'TokenDetectionController',
allowedActions: [
'AccountsController:getAccount',
'AccountsController:getSelectedAccount',
'KeyringController:getState',
'NetworkController:getNetworkClientById',
Expand All @@ -1632,7 +1554,7 @@ export default class MetamaskController extends EventEmitter {
'TokensController:addDetectedTokens',
],
allowedEvents: [
'AccountsController:selectedAccountChange',
'AccountsController:selectedEvmAccountChange',
'KeyringController:lock',
'KeyringController:unlock',
'NetworkController:networkDidChange',
Expand Down
Loading
Loading