diff --git a/app/core/Engine.ts b/app/core/Engine.ts index a5969f5edf3..eb4fd6ee190 100644 --- a/app/core/Engine.ts +++ b/app/core/Engine.ts @@ -492,19 +492,6 @@ class Engine { ) { this.controllerMessenger = new ExtendedControllerMessenger(); - /** - * Subscribes a listener to the state change events of Preferences Controller. - * - * @param listener - The callback function to execute when the state changes. - */ - const onPreferencesStateChange = ( - listener: (preferencesState: PreferencesState) => void, - ) => { - const eventName = `PreferencesController:stateChange`; - - this.controllerMessenger.subscribe(eventName, listener); - }; - const approvalController = new ApprovalController({ messenger: this.controllerMessenger.getRestricted({ name: 'ApprovalController', @@ -560,18 +547,32 @@ class Engine { networkController.initializeProvider(); const assetsContractController = new AssetsContractController({ - onPreferencesStateChange, + // @ts-expect-error TODO: Resolve mismatch between base-controller versions. + messenger: this.controllerMessenger.getRestricted({ + name: 'AssetsContractController', + allowedActions: [ + 'NetworkController:getNetworkClientById', + 'NetworkController:getNetworkConfigurationByNetworkClientId', + 'NetworkController:getSelectedNetworkClient', + 'NetworkController:getState', + ], + allowedEvents: [ + 'PreferencesController:stateChange', + 'NetworkController:networkDidChange', + ], + }), + /* onPreferencesStateChange, onNetworkDidChange: (listener) => this.controllerMessenger.subscribe( AppConstants.NETWORK_DID_CHANGE_EVENT, // @ts-expect-error TODO: Resolve bump the assets controller version. listener, - ), + ), */ chainId: networkController.getNetworkClientById( networkController?.state.selectedNetworkClientId, ).configuration.chainId, - getNetworkClientById: - networkController.getNetworkClientById.bind(networkController), + /* getNetworkClientById: + networkController.getNetworkClientById.bind(networkController), */ }); const accountsControllerMessenger: AccountsControllerMessenger = this.controllerMessenger.getRestricted({ @@ -613,6 +614,12 @@ class Engine { `${networkController.name}:getNetworkClientById`, 'AccountsController:getAccount', 'AccountsController:getSelectedAccount', + 'AssetsContractController:getERC721AssetName', + 'AssetsContractController:getERC721AssetSymbol', + 'AssetsContractController:getERC721TokenURI', + 'AssetsContractController:getERC721OwnerOf', + 'AssetsContractController:getERC1155BalanceOf', + 'AssetsContractController:getERC1155TokenURI ', ], allowedEvents: [ 'PreferencesController:stateChange', @@ -620,25 +627,6 @@ class Engine { 'AccountsController:selectedEvmAccountChange', ], }), - - getERC721AssetName: assetsContractController.getERC721AssetName.bind( - assetsContractController, - ), - getERC721AssetSymbol: assetsContractController.getERC721AssetSymbol.bind( - assetsContractController, - ), - getERC721TokenURI: assetsContractController.getERC721TokenURI.bind( - assetsContractController, - ), - getERC721OwnerOf: assetsContractController.getERC721OwnerOf.bind( - assetsContractController, - ), - getERC1155BalanceOf: assetsContractController.getERC1155BalanceOf.bind( - assetsContractController, - ), - getERC1155TokenURI: assetsContractController.getERC1155TokenURI.bind( - assetsContractController, - ), }); const loggingController = new LoggingController({ @@ -1513,12 +1501,12 @@ class Engine { // @ts-expect-error TODO: Resolve mismatch between base-controller versions. messenger: this.controllerMessenger.getRestricted({ name: 'TokenBalancesController', - allowedActions: ['AccountsController:getSelectedAccount'], + allowedActions: [ + 'AccountsController:getSelectedAccount', + 'AssetsContractController:getERC20BalanceOf', + ], allowedEvents: ['TokensController:stateChange'], }), - getERC20BalanceOf: assetsContractController.getERC20BalanceOf.bind( - assetsContractController, - ), interval: 180000, }), new TokenRatesController({ @@ -1788,7 +1776,7 @@ class Engine { return; } provider.sendAsync = provider.sendAsync.bind(provider); - AssetsContractController.configure({ provider }); + AssetsContractController.setProvider(provider); SwapsController.configure({ provider, diff --git a/app/core/EngineService/EngineService.ts b/app/core/EngineService/EngineService.ts index 010a251c822..c848bec1fb8 100644 --- a/app/core/EngineService/EngineService.ts +++ b/app/core/EngineService/EngineService.ts @@ -53,7 +53,10 @@ class EngineService { name: 'AddressBookController', key: `${engine.context.AddressBookController.name}:stateChange`, }, - { name: 'AssetsContractController' }, + { + name: 'AssetsContractController', + key: 'AssetsContractController:stateChange', + }, { name: 'NftController', key: 'NftController:stateChange' }, { name: 'TokensController', diff --git a/package.json b/package.json index 194d60f6083..1eb2234067c 100644 --- a/package.json +++ b/package.json @@ -142,7 +142,7 @@ "@metamask/accounts-controller": "^18.2.1", "@metamask/address-book-controller": "^6.0.1", "@metamask/approval-controller": "^7.1.0", - "@metamask/assets-controllers": "^36.0.0", + "@metamask/assets-controllers": "^37.0.0", "@metamask/base-controller": "^7.0.1", "@metamask/composable-controller": "^3.0.0", "@metamask/contract-metadata": "^2.1.0", diff --git a/patches/@metamask+assets-controllers+36.0.0.patch b/patches/@metamask+assets-controllers+37.0.0.patch similarity index 70% rename from patches/@metamask+assets-controllers+36.0.0.patch rename to patches/@metamask+assets-controllers+37.0.0.patch index af8d00e058a..069ebb4893f 100644 --- a/patches/@metamask+assets-controllers+36.0.0.patch +++ b/patches/@metamask+assets-controllers+37.0.0.patch @@ -1,35 +1,13 @@ -diff --git a/node_modules/@metamask/assets-controllers/dist/chunk-DSDI75PJ.js b/node_modules/@metamask/assets-controllers/dist/chunk-DSDI75PJ.js -index f95d90f..3c33263 100644 ---- a/node_modules/@metamask/assets-controllers/dist/chunk-DSDI75PJ.js -+++ b/node_modules/@metamask/assets-controllers/dist/chunk-DSDI75PJ.js -@@ -173,6 +173,17 @@ var TokenRatesController = class extends _pollingcontroller.StaticIntervalPollin - _chunkZ4BLTVTBjs.__privateMethod.call(void 0, this, _subscribeToNetworkStateChange, subscribeToNetworkStateChange_fn).call(this); - _chunkZ4BLTVTBjs.__privateMethod.call(void 0, this, _subscribeToAccountChange, subscribeToAccountChange_fn).call(this); - } -+ -+ /** -+ * THIS FUNCTIONS IS CURRENTLY PATCHED AND STILL NEEDS TO BE IMPLEMENTED ON THE CORE REPO -+ * Resets to the default state -+ */ -+ reset() { -+ this.update((state) => { -+ state.marketData = {}; -+ }); -+ } -+ - /** - * Allows controller to make active and passive polling requests - */ -diff --git a/node_modules/@metamask/assets-controllers/dist/chunk-HTIZ4JKG.js b/node_modules/@metamask/assets-controllers/dist/chunk-HTIZ4JKG.js -index a9f6736..ecd98e7 100644 ---- a/node_modules/@metamask/assets-controllers/dist/chunk-HTIZ4JKG.js -+++ b/node_modules/@metamask/assets-controllers/dist/chunk-HTIZ4JKG.js +diff --git a/node_modules/@metamask/assets-controllers/dist/chunk-2TZK6YZA.js b/node_modules/@metamask/assets-controllers/dist/chunk-2TZK6YZA.js +index 1d6c20d..abf5f3b 100644 +--- a/node_modules/@metamask/assets-controllers/dist/chunk-2TZK6YZA.js ++++ b/node_modules/@metamask/assets-controllers/dist/chunk-2TZK6YZA.js @@ -46,7 +46,7 @@ var getDefaultNftControllerState = () => ({ allNfts: {}, ignoredNfts: [] }); --var _mutex, _selectedAccountId, _chainId, _ipfsGateway, _openSeaEnabled, _useIpfsSubdomains, _isIpfsGatewayEnabled, _getERC721AssetName, _getERC721AssetSymbol, _getERC721TokenURI, _getERC721OwnerOf, _getERC1155BalanceOf, _getERC1155TokenURI, _onNftAdded, _onNetworkControllerNetworkDidChange, onNetworkControllerNetworkDidChange_fn, _onPreferencesControllerStateChange, onPreferencesControllerStateChange_fn, _onSelectedAccountChange, onSelectedAccountChange_fn, _updateNestedNftState, updateNestedNftState_fn, _getNftInformationFromApi, getNftInformationFromApi_fn, _getNftInformationFromTokenURI, getNftInformationFromTokenURI_fn, _getNftURIAndStandard, getNftURIAndStandard_fn, _getNftInformation, getNftInformation_fn, _getNftContractInformationFromContract, getNftContractInformationFromContract_fn, _getNftContractInformation, getNftContractInformation_fn, _addIndividualNft, addIndividualNft_fn, _addNftContract, addNftContract_fn, _removeAndIgnoreIndividualNft, removeAndIgnoreIndividualNft_fn, _removeIndividualNft, removeIndividualNft_fn, _removeNftContract, removeNftContract_fn, _validateWatchNft, validateWatchNft_fn, _getCorrectChainId, getCorrectChainId_fn, _getAddressOrSelectedAddress, getAddressOrSelectedAddress_fn, _updateNftUpdateForAccount, updateNftUpdateForAccount_fn; -+var _mutex, _selectedAccountId, _chainId, _ipfsGateway, _displayNftMedia, _useIpfsSubdomains, _isIpfsGatewayEnabled, _getERC721AssetName, _getERC721AssetSymbol, _getERC721TokenURI, _getERC721OwnerOf, _getERC1155BalanceOf, _getERC1155TokenURI, _onNftAdded, _onNetworkControllerNetworkDidChange, onNetworkControllerNetworkDidChange_fn, _onPreferencesControllerStateChange, onPreferencesControllerStateChange_fn, _onSelectedAccountChange, onSelectedAccountChange_fn, _updateNestedNftState, updateNestedNftState_fn, _getNftInformationFromApi, getNftInformationFromApi_fn, _getNftInformationFromTokenURI, getNftInformationFromTokenURI_fn, _getNftURIAndStandard, getNftURIAndStandard_fn, _getNftInformation, getNftInformation_fn, _getNftContractInformationFromContract, getNftContractInformationFromContract_fn, _getNftContractInformation, getNftContractInformation_fn, _addIndividualNft, addIndividualNft_fn, _addNftContract, addNftContract_fn, _removeAndIgnoreIndividualNft, removeAndIgnoreIndividualNft_fn, _removeIndividualNft, removeIndividualNft_fn, _removeNftContract, removeNftContract_fn, _validateWatchNft, validateWatchNft_fn, _getCorrectChainId, getCorrectChainId_fn, _getAddressOrSelectedAddress, getAddressOrSelectedAddress_fn, _updateNftUpdateForAccount, updateNftUpdateForAccount_fn; +-var _mutex, _selectedAccountId, _chainId, _ipfsGateway, _openSeaEnabled, _useIpfsSubdomains, _isIpfsGatewayEnabled, _onNftAdded, _onNetworkControllerNetworkDidChange, onNetworkControllerNetworkDidChange_fn, _onPreferencesControllerStateChange, onPreferencesControllerStateChange_fn, _onSelectedAccountChange, onSelectedAccountChange_fn, _updateNestedNftState, updateNestedNftState_fn, _getNftCollectionApi, getNftCollectionApi_fn, _getNftInformationFromApi, getNftInformationFromApi_fn, _getNftInformationFromTokenURI, getNftInformationFromTokenURI_fn, _getNftURIAndStandard, getNftURIAndStandard_fn, _getNftInformation, getNftInformation_fn, _getNftContractInformationFromContract, getNftContractInformationFromContract_fn, _getNftContractInformation, getNftContractInformation_fn, _addIndividualNft, addIndividualNft_fn, _addNftContract, addNftContract_fn, _removeAndIgnoreIndividualNft, removeAndIgnoreIndividualNft_fn, _removeIndividualNft, removeIndividualNft_fn, _removeNftContract, removeNftContract_fn, _validateWatchNft, validateWatchNft_fn, _getCorrectChainId, getCorrectChainId_fn, _getAddressOrSelectedAddress, getAddressOrSelectedAddress_fn, _updateNftUpdateForAccount, updateNftUpdateForAccount_fn; ++var _mutex, _selectedAccountId, _chainId, _ipfsGateway, _displayNftMedia, _useIpfsSubdomains, _isIpfsGatewayEnabled, _onNftAdded, _onNetworkControllerNetworkDidChange, onNetworkControllerNetworkDidChange_fn, _onPreferencesControllerStateChange, onPreferencesControllerStateChange_fn, _onSelectedAccountChange, onSelectedAccountChange_fn, _updateNestedNftState, updateNestedNftState_fn, _getNftCollectionApi, getNftCollectionApi_fn, _getNftInformationFromApi, getNftInformationFromApi_fn, _getNftInformationFromTokenURI, getNftInformationFromTokenURI_fn, _getNftURIAndStandard, getNftURIAndStandard_fn, _getNftInformation, getNftInformation_fn, _getNftContractInformationFromContract, getNftContractInformationFromContract_fn, _getNftContractInformation, getNftContractInformation_fn, _addIndividualNft, addIndividualNft_fn, _addNftContract, addNftContract_fn, _removeAndIgnoreIndividualNft, removeAndIgnoreIndividualNft_fn, _removeIndividualNft, removeIndividualNft_fn, _removeNftContract, removeNftContract_fn, _validateWatchNft, validateWatchNft_fn, _getCorrectChainId, getCorrectChainId_fn, _getAddressOrSelectedAddress, getAddressOrSelectedAddress_fn, _updateNftUpdateForAccount, updateNftUpdateForAccount_fn; var NftController = class extends _basecontroller.BaseController { /** * Creates an NftController instance. @@ -41,8 +19,8 @@ index a9f6736..ecd98e7 100644 + * @param options.displayNftMedia - Controls whether the OpenSea API is used. * @param options.useIpfsSubdomains - Controls whether IPFS subdomains are used. * @param options.isIpfsGatewayEnabled - Controls whether IPFS is enabled or not. - * @param options.getERC721AssetName - Gets the name of the asset at the given address. -@@ -71,7 +71,7 @@ var NftController = class extends _basecontroller.BaseController { + * @param options.onNftAdded - Callback that is called when an NFT is added. Currently used pass data +@@ -65,7 +65,7 @@ var NftController = class extends _basecontroller.BaseController { constructor({ chainId: initialChainId, ipfsGateway = _controllerutils.IPFS_DEFAULT_GATEWAY_URL, @@ -50,8 +28,8 @@ index a9f6736..ecd98e7 100644 + displayNftMedia = false, useIpfsSubdomains = true, isIpfsGatewayEnabled = true, - getERC721AssetName, -@@ -103,7 +103,7 @@ var NftController = class extends _basecontroller.BaseController { + onNftAdded, +@@ -91,7 +91,7 @@ var NftController = class extends _basecontroller.BaseController { * Handles the state change of the preference controller. * @param preferencesState - The new state of the preference controller. * @param preferencesState.ipfsGateway - The configured IPFS gateway. @@ -60,7 +38,7 @@ index a9f6736..ecd98e7 100644 * @param preferencesState.isIpfsGatewayEnabled - Controls whether IPFS is enabled or not. */ _chunkZ4BLTVTBjs.__privateAdd.call(void 0, this, _onPreferencesControllerStateChange); -@@ -239,7 +239,7 @@ var NftController = class extends _basecontroller.BaseController { +@@ -228,7 +228,7 @@ var NftController = class extends _basecontroller.BaseController { _chunkZ4BLTVTBjs.__privateAdd.call(void 0, this, _selectedAccountId, void 0); _chunkZ4BLTVTBjs.__privateAdd.call(void 0, this, _chainId, void 0); _chunkZ4BLTVTBjs.__privateAdd.call(void 0, this, _ipfsGateway, void 0); @@ -68,8 +46,8 @@ index a9f6736..ecd98e7 100644 + _chunkZ4BLTVTBjs.__privateAdd.call(void 0, this, _displayNftMedia, void 0); _chunkZ4BLTVTBjs.__privateAdd.call(void 0, this, _useIpfsSubdomains, void 0); _chunkZ4BLTVTBjs.__privateAdd.call(void 0, this, _isIpfsGatewayEnabled, void 0); - _chunkZ4BLTVTBjs.__privateAdd.call(void 0, this, _getERC721AssetName, void 0); -@@ -254,7 +254,7 @@ var NftController = class extends _basecontroller.BaseController { + _chunkZ4BLTVTBjs.__privateAdd.call(void 0, this, _onNftAdded, void 0); +@@ -237,7 +237,7 @@ var NftController = class extends _basecontroller.BaseController { ).id); _chunkZ4BLTVTBjs.__privateSet.call(void 0, this, _chainId, initialChainId); _chunkZ4BLTVTBjs.__privateSet.call(void 0, this, _ipfsGateway, ipfsGateway); @@ -77,8 +55,8 @@ index a9f6736..ecd98e7 100644 + _chunkZ4BLTVTBjs.__privateSet.call(void 0, this, _displayNftMedia, displayNftMedia); _chunkZ4BLTVTBjs.__privateSet.call(void 0, this, _useIpfsSubdomains, useIpfsSubdomains); _chunkZ4BLTVTBjs.__privateSet.call(void 0, this, _isIpfsGatewayEnabled, isIpfsGatewayEnabled); - _chunkZ4BLTVTBjs.__privateSet.call(void 0, this, _getERC721AssetName, getERC721AssetName); -@@ -281,6 +281,19 @@ var NftController = class extends _basecontroller.BaseController { + _chunkZ4BLTVTBjs.__privateSet.call(void 0, this, _onNftAdded, onNftAdded); +@@ -258,6 +258,20 @@ var NftController = class extends _basecontroller.BaseController { _chunkZ4BLTVTBjs.__privateMethod.call(void 0, this, _onSelectedAccountChange, onSelectedAccountChange_fn).bind(this) ); } @@ -94,11 +72,12 @@ index a9f6736..ecd98e7 100644 + state.ignoredNfts = []; + }); + } -+ ++ ++ getNftApi() { return `${_controllerutils.NFT_API_BASE_URL}/tokens`; } -@@ -799,7 +812,7 @@ _mutex = new WeakMap(); +@@ -806,7 +820,7 @@ _mutex = new WeakMap(); _selectedAccountId = new WeakMap(); _chainId = new WeakMap(); _ipfsGateway = new WeakMap(); @@ -106,8 +85,8 @@ index a9f6736..ecd98e7 100644 +_displayNftMedia = new WeakMap(); _useIpfsSubdomains = new WeakMap(); _isIpfsGatewayEnabled = new WeakMap(); - _getERC721AssetName = new WeakMap(); -@@ -824,7 +837,7 @@ onNetworkControllerNetworkDidChange_fn = function({ + _onNftAdded = new WeakMap(); +@@ -825,7 +839,7 @@ onNetworkControllerNetworkDidChange_fn = function({ _onPreferencesControllerStateChange = new WeakSet(); onPreferencesControllerStateChange_fn = async function({ ipfsGateway, @@ -116,7 +95,7 @@ index a9f6736..ecd98e7 100644 isIpfsGatewayEnabled }) { const selectedAccount = this.messagingSystem.call( -@@ -832,9 +845,9 @@ onPreferencesControllerStateChange_fn = async function({ +@@ -833,9 +847,9 @@ onPreferencesControllerStateChange_fn = async function({ ); _chunkZ4BLTVTBjs.__privateSet.call(void 0, this, _selectedAccountId, selectedAccount.id); _chunkZ4BLTVTBjs.__privateSet.call(void 0, this, _ipfsGateway, ipfsGateway); @@ -128,7 +107,7 @@ index a9f6736..ecd98e7 100644 if (needsUpdateNftMetadata && selectedAccount) { await _chunkZ4BLTVTBjs.__privateMethod.call(void 0, this, _updateNftUpdateForAccount, updateNftUpdateForAccount_fn).call(this, selectedAccount); } -@@ -843,7 +856,7 @@ _onSelectedAccountChange = new WeakSet(); +@@ -844,7 +858,7 @@ _onSelectedAccountChange = new WeakSet(); onSelectedAccountChange_fn = async function(internalAccount) { const oldSelectedAccountId = _chunkZ4BLTVTBjs.__privateGet.call(void 0, this, _selectedAccountId); _chunkZ4BLTVTBjs.__privateSet.call(void 0, this, _selectedAccountId, internalAccount.id); @@ -137,7 +116,7 @@ index a9f6736..ecd98e7 100644 if (needsUpdateNftMetadata) { await _chunkZ4BLTVTBjs.__privateMethod.call(void 0, this, _updateNftUpdateForAccount, updateNftUpdateForAccount_fn).call(this, internalAccount); } -@@ -900,7 +913,8 @@ getNftInformationFromApi_fn = async function(contractAddress, tokenId) { +@@ -905,7 +919,8 @@ getNftInformationFromApi_fn = async function(contractAddress, tokenId) { name: null, description: null, image: null, @@ -147,7 +126,7 @@ index a9f6736..ecd98e7 100644 }; } const { -@@ -961,7 +975,7 @@ getNftInformationFromTokenURI_fn = async function(contractAddress, tokenId, netw +@@ -966,7 +981,7 @@ getNftInformationFromTokenURI_fn = async function(contractAddress, tokenId, netw tokenURI: tokenURI ?? null }; } @@ -156,7 +135,7 @@ index a9f6736..ecd98e7 100644 if (!hasIpfsTokenURI && !isDisplayNFTMediaToggleEnabled) { return { image: null, -@@ -969,7 +983,8 @@ getNftInformationFromTokenURI_fn = async function(contractAddress, tokenId, netw +@@ -974,7 +989,8 @@ getNftInformationFromTokenURI_fn = async function(contractAddress, tokenId, netw description: null, standard: standard || null, favorite: false, @@ -166,7 +145,7 @@ index a9f6736..ecd98e7 100644 }; } if (hasIpfsTokenURI) { -@@ -1010,7 +1025,8 @@ getNftInformationFromTokenURI_fn = async function(contractAddress, tokenId, netw +@@ -1015,7 +1031,8 @@ getNftInformationFromTokenURI_fn = async function(contractAddress, tokenId, netw description: null, standard: standard || null, favorite: false, @@ -176,7 +155,7 @@ index a9f6736..ecd98e7 100644 }; } }; -@@ -1041,10 +1057,21 @@ getNftInformation_fn = async function(contractAddress, tokenId, networkClientId) +@@ -1056,10 +1073,21 @@ getNftInformation_fn = async function(contractAddress, tokenId, networkClientId) _controllerutils.safelyExecute.call(void 0, () => _chunkZ4BLTVTBjs.__privateMethod.call(void 0, this, _getNftInformationFromTokenURI, getNftInformationFromTokenURI_fn).call(this, contractAddress, tokenId, networkClientId) ), @@ -199,7 +178,7 @@ index a9f6736..ecd98e7 100644 return { ...nftApiMetadata, name: blockchainMetadata?.name ?? nftApiMetadata?.name ?? null, -@@ -1161,7 +1188,8 @@ addIndividualNft_fn = async function(tokenAddress, tokenId, nftMetadata, nftCont +@@ -1184,7 +1212,8 @@ addIndividualNft_fn = async function(tokenAddress, tokenId, nftMetadata, nftCont symbol: nftContract.symbol, tokenId: tokenId.toString(), standard: nftMetadata.standard, @@ -209,34 +188,13 @@ index a9f6736..ecd98e7 100644 }); } } finally { -diff --git a/node_modules/@metamask/assets-controllers/dist/chunk-NHFZIY2K.js b/node_modules/@metamask/assets-controllers/dist/chunk-NHFZIY2K.js -index 995ec6b..7222a8a 100644 ---- a/node_modules/@metamask/assets-controllers/dist/chunk-NHFZIY2K.js -+++ b/node_modules/@metamask/assets-controllers/dist/chunk-NHFZIY2K.js -@@ -19,7 +19,7 @@ function getDefaultTokenBalancesState() { - contractBalances: {} - }; - } --var _handle, _getERC20BalanceOf, _interval, _tokens, _disabled; -+var _handle, _getERC20BalanceOf, _interval, _tokens, _disabled, _updateInProgress; - var TokenBalancesController = class extends _basecontroller.BaseController { - /** - * Construct a Token Balances Controller. -@@ -54,9 +54,11 @@ var TokenBalancesController = class extends _basecontroller.BaseController { - _chunkZ4BLTVTBjs.__privateAdd.call(void 0, this, _interval, void 0); - _chunkZ4BLTVTBjs.__privateAdd.call(void 0, this, _tokens, void 0); - _chunkZ4BLTVTBjs.__privateAdd.call(void 0, this, _disabled, void 0); -+ _chunkZ4BLTVTBjs.__privateAdd.call(void 0, this, _updateInProgress, void 0); - _chunkZ4BLTVTBjs.__privateSet.call(void 0, this, _disabled, disabled); - _chunkZ4BLTVTBjs.__privateSet.call(void 0, this, _interval, interval); - _chunkZ4BLTVTBjs.__privateSet.call(void 0, this, _tokens, tokens); -+ _chunkZ4BLTVTBjs.__privateSet.call(void 0, this, _updateInProgress, false); - this.messagingSystem.subscribe( - "TokensController:stateChange", - ({ tokens: newTokens, detectedTokens }) => { -@@ -67,6 +69,17 @@ var TokenBalancesController = class extends _basecontroller.BaseController { - _chunkZ4BLTVTBjs.__privateSet.call(void 0, this, _getERC20BalanceOf, getERC20BalanceOf); - this.poll(); +diff --git a/node_modules/@metamask/assets-controllers/dist/chunk-ADJ3IFJH.js b/node_modules/@metamask/assets-controllers/dist/chunk-ADJ3IFJH.js +index fb25753..88208d5 100644 +--- a/node_modules/@metamask/assets-controllers/dist/chunk-ADJ3IFJH.js ++++ b/node_modules/@metamask/assets-controllers/dist/chunk-ADJ3IFJH.js +@@ -189,6 +189,21 @@ var TokensController = class extends _basecontroller.BaseController { + } + ); } + + /** @@ -245,59 +203,17 @@ index 995ec6b..7222a8a 100644 + */ + reset() { + this.update((state) => { -+ state.contractBalances = {}; ++ state.allTokens = {}; ++ state.allIgnoredTokens = {}; ++ state.ignoredTokens = []; ++ state.tokens = []; + }); + } -+ ++ ++ /** - * Allows controller to update tracked tokens contract balances. - */ -@@ -107,20 +120,27 @@ var TokenBalancesController = class extends _basecontroller.BaseController { - "AccountsController:getSelectedAccount" - ); - const newContractBalances = {}; -- for (const token of _chunkZ4BLTVTBjs.__privateGet.call(void 0, this, _tokens)) { -+ const balancePromises = _chunkZ4BLTVTBjs.__privateGet.call(void 0, this, _tokens).map((token) => { - const { address } = token; -- try { -- const balance = await _chunkZ4BLTVTBjs.__privateGet.call(void 0, this, _getERC20BalanceOf).call(this, address, selectedInternalAccount.address); -- newContractBalances[address] = _controllerutils.toHex.call(void 0, balance); -- token.hasBalanceError = false; -- } catch (error) { -- newContractBalances[address] = _controllerutils.toHex.call(void 0, 0); -- token.hasBalanceError = true; -- } -- } -+ return _chunkZ4BLTVTBjs.__privateGet.call(void 0, this, _getERC20BalanceOf).call(this, address, selectedInternalAccount.address).then((balance) => { -+ newContractBalances[address] = _controllerutils.toHex.call(void 0, balance); -+ token = { -+ ...token, -+ hasBalanceError: false -+ }; -+ }).catch((error) => { -+ newContractBalances[address] = _controllerutils.toHex.call(void 0, 0); -+ token = { -+ ...token, -+ hasBalanceError: true -+ }; -+ }); -+ }); -+ await Promise.all(balancePromises); - this.update((state) => { - state.contractBalances = newContractBalances; - }); -+ _chunkZ4BLTVTBjs.__privateSet.call(void 0, this, _updateInProgress, false); - } - }; - _handle = new WeakMap(); -@@ -128,6 +148,7 @@ _getERC20BalanceOf = new WeakMap(); - _interval = new WeakMap(); - _tokens = new WeakMap(); - _disabled = new WeakMap(); -+_updateInProgress = new WeakMap(); - var TokenBalancesController_default = TokenBalancesController; - - + * Adds a token to the stored token list. + * diff --git a/node_modules/@metamask/assets-controllers/dist/chunk-T5ZX5BV7.js b/node_modules/@metamask/assets-controllers/dist/chunk-T5ZX5BV7.js index 9c89a65..2ac17ba 100644 --- a/node_modules/@metamask/assets-controllers/dist/chunk-T5ZX5BV7.js @@ -351,13 +267,56 @@ index 9c89a65..2ac17ba 100644 } finally { releaseLock(); } -diff --git a/node_modules/@metamask/assets-controllers/dist/chunk-TPUVGGNO.js b/node_modules/@metamask/assets-controllers/dist/chunk-TPUVGGNO.js -index baaf7d0..cfefb60 100644 ---- a/node_modules/@metamask/assets-controllers/dist/chunk-TPUVGGNO.js -+++ b/node_modules/@metamask/assets-controllers/dist/chunk-TPUVGGNO.js -@@ -189,6 +189,20 @@ var TokensController = class extends _basecontroller.BaseController { - } +diff --git a/node_modules/@metamask/assets-controllers/dist/chunk-X2HRAVDO.js b/node_modules/@metamask/assets-controllers/dist/chunk-X2HRAVDO.js +index 2688318..fa7521e 100644 +--- a/node_modules/@metamask/assets-controllers/dist/chunk-X2HRAVDO.js ++++ b/node_modules/@metamask/assets-controllers/dist/chunk-X2HRAVDO.js +@@ -173,6 +173,17 @@ var TokenRatesController = class extends _pollingcontroller.StaticIntervalPollin + _chunkZ4BLTVTBjs.__privateMethod.call(void 0, this, _subscribeToNetworkStateChange, subscribeToNetworkStateChange_fn).call(this); + _chunkZ4BLTVTBjs.__privateMethod.call(void 0, this, _subscribeToAccountChange, subscribeToAccountChange_fn).call(this); + } ++ ++ /** ++ * THIS FUNCTIONS IS CURRENTLY PATCHED AND STILL NEEDS TO BE IMPLEMENTED ON THE CORE REPO ++ * Resets to the default state ++ */ ++ reset() { ++ this.update((state) => { ++ state.marketData = {}; ++ }); ++ } ++ + /** + * Allows controller to make active and passive polling requests + */ +diff --git a/node_modules/@metamask/assets-controllers/dist/chunk-YGGUAMHV.js b/node_modules/@metamask/assets-controllers/dist/chunk-YGGUAMHV.js +index 6550aec..8e19aab 100644 +--- a/node_modules/@metamask/assets-controllers/dist/chunk-YGGUAMHV.js ++++ b/node_modules/@metamask/assets-controllers/dist/chunk-YGGUAMHV.js +@@ -17,7 +17,7 @@ function getDefaultTokenBalancesState() { + contractBalances: {} + }; + } +-var _handle, _interval, _tokens, _disabled; ++var _handle, _interval, _tokens, _disabled, _updateInProgress; + var TokenBalancesController = class extends _basecontroller.BaseController { + /** + * Construct a Token Balances Controller. +@@ -49,9 +49,11 @@ var TokenBalancesController = class extends _basecontroller.BaseController { + _chunkZ4BLTVTBjs.__privateAdd.call(void 0, this, _interval, void 0); + _chunkZ4BLTVTBjs.__privateAdd.call(void 0, this, _tokens, void 0); + _chunkZ4BLTVTBjs.__privateAdd.call(void 0, this, _disabled, void 0); ++ _chunkZ4BLTVTBjs.__privateAdd.call(void 0, this, _updateInProgress, void 0); + _chunkZ4BLTVTBjs.__privateSet.call(void 0, this, _disabled, disabled); + _chunkZ4BLTVTBjs.__privateSet.call(void 0, this, _interval, interval); + _chunkZ4BLTVTBjs.__privateSet.call(void 0, this, _tokens, tokens); ++ _chunkZ4BLTVTBjs.__privateSet.call(void 0, this, _updateInProgress, false); + this.messagingSystem.subscribe( + "TokensController:stateChange", + ({ tokens: newTokens, detectedTokens }) => { +@@ -61,6 +63,18 @@ var TokenBalancesController = class extends _basecontroller.BaseController { ); + this.poll(); } + + /** @@ -366,18 +325,65 @@ index baaf7d0..cfefb60 100644 + */ + reset() { + this.update((state) => { -+ state.allTokens = {}; -+ state.allIgnoredTokens = {}; -+ state.ignoredTokens = []; -+ state.tokens = []; ++ state.contractBalances = {}; + }); + } ++ + /** - * Adds a token to the stored token list. - * + * Allows controller to update tracked tokens contract balances. + */ +@@ -101,30 +115,34 @@ var TokenBalancesController = class extends _basecontroller.BaseController { + "AccountsController:getSelectedAccount" + ); + const newContractBalances = {}; +- for (const token of _chunkZ4BLTVTBjs.__privateGet.call(void 0, this, _tokens)) { ++ const balancePromises = _chunkZ4BLTVTBjs.__privateGet.call(void 0, this, _tokens).map((token) => { + const { address } = token; +- try { +- const balance = await this.messagingSystem.call( +- "AssetsContractController:getERC20BalanceOf", +- address, +- selectedInternalAccount.address +- ); +- newContractBalances[address] = _controllerutils.toHex.call(void 0, balance); +- token.hasBalanceError = false; +- } catch (error) { +- newContractBalances[address] = _controllerutils.toHex.call(void 0, 0); +- token.hasBalanceError = true; +- } +- } ++ return _chunkZ4BLTVTBjs.__privateGet.call(void 0, this, _getERC20BalanceOf).call(this, address, selectedInternalAccount.address).then((balance) => { ++ newContractBalances[address] = _controllerutils.toHex.call(void 0, balance); ++ token = { ++ ...token, ++ hasBalanceError: false ++ }; ++ }).catch((error) => { ++ newContractBalances[address] = _controllerutils.toHex.call(void 0, 0); ++ token = { ++ ...token, ++ hasBalanceError: true ++ }; ++ }); ++ }); ++ await Promise.all(balancePromises); + this.update((state) => { + state.contractBalances = newContractBalances; + }); ++ _chunkZ4BLTVTBjs.__privateSet.call(void 0, this, _updateInProgress, false); + } + }; + _handle = new WeakMap(); + _interval = new WeakMap(); + _tokens = new WeakMap(); + _disabled = new WeakMap(); ++_updateInProgress = new WeakMap(); + var TokenBalancesController_default = TokenBalancesController; + + diff --git a/node_modules/@metamask/assets-controllers/dist/types/NftController.d.ts b/node_modules/@metamask/assets-controllers/dist/types/NftController.d.ts -index a69c32d..077e2db 100644 +index 576faaa..3311706 100644 --- a/node_modules/@metamask/assets-controllers/dist/types/NftController.d.ts +++ b/node_modules/@metamask/assets-controllers/dist/types/NftController.d.ts @@ -108,6 +108,7 @@ export type NftMetadata = { @@ -388,9 +394,9 @@ index a69c32d..077e2db 100644 collection?: Collection; address?: string; attributes?: Attributes[]; -@@ -421,6 +422,11 @@ export declare class NftController extends BaseController; _requestApproval(suggestedNftMeta: SuggestedNftMeta): Promise; + /** + * THIS FUNCTIONS IS CURRENTLY PATCHED AND STILL NEEDS TO BE IMPLEMENTED ON THE CORE REPO @@ -402,10 +408,10 @@ index a69c32d..077e2db 100644 //# sourceMappingURL=NftController.d.ts.map \ No newline at end of file diff --git a/node_modules/@metamask/assets-controllers/dist/types/TokenBalancesController.d.ts b/node_modules/@metamask/assets-controllers/dist/types/TokenBalancesController.d.ts -index 45d58f8..ce24723 100644 +index 09a5fe0..ce64d87 100644 --- a/node_modules/@metamask/assets-controllers/dist/types/TokenBalancesController.d.ts +++ b/node_modules/@metamask/assets-controllers/dist/types/TokenBalancesController.d.ts -@@ -79,6 +79,11 @@ export declare class TokenBalancesController extends BaseController; @@ -452,16 +458,3 @@ index a3eb08b..9bbc823 100644 export default TokensController; //# sourceMappingURL=TokensController.d.ts.map \ No newline at end of file -diff --git a/node_modules/@metamask/assets-controllers/dist/types/index.d.ts b/node_modules/@metamask/assets-controllers/dist/types/index.d.ts -index 2a42816..f0d02dc 100644 ---- a/node_modules/@metamask/assets-controllers/dist/types/index.d.ts -+++ b/node_modules/@metamask/assets-controllers/dist/types/index.d.ts -@@ -6,7 +6,7 @@ export type { NftControllerState, NftControllerMessenger, NftControllerActions, - export { getDefaultNftControllerState, NftController } from './NftController'; - export type { NftDetectionControllerMessenger, ApiNft, ApiNftContract, ApiNftLastSale, ApiNftCreator, ReservoirResponse, TokensResponse, BlockaidResultType, Blockaid, Market, TokenResponse, TopBid, LastSale, FeeBreakdown, Attributes, Collection, Royalties, Ownership, FloorAsk, Price, Metadata, } from './NftDetectionController'; - export { NftDetectionController } from './NftDetectionController'; --export type { TokenBalancesControllerMessenger, TokenBalancesControllerActions, TokenBalancesControllerGetStateAction, TokenBalancesControllerEvents, TokenBalancesControllerStateChangeEvent, } from './TokenBalancesController'; -+export type { TokenBalancesControllerMessenger, TokenBalancesControllerActions, TokenBalancesControllerGetStateAction, TokenBalancesControllerEvents, TokenBalancesControllerStateChangeEvent, TokenBalancesControllerState, } from './TokenBalancesController'; - export { TokenBalancesController } from './TokenBalancesController'; - export type { TokenDetectionControllerMessenger, TokenDetectionControllerActions, TokenDetectionControllerGetStateAction, TokenDetectionControllerEvents, TokenDetectionControllerStateChangeEvent, } from './TokenDetectionController'; - export { TokenDetectionController } from './TokenDetectionController'; diff --git a/yarn.lock b/yarn.lock index 170808a4521..1347f69bdd2 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4286,7 +4286,7 @@ resolved "https://registry.yarnpkg.com/@mantine/hooks/-/hooks-7.8.0.tgz#fc32e07746689459c4b049dc581d1dbda5545686" integrity sha512-+70fkgjhVJeJ+nJqnburIM3UAsfvxat1Low9HMPobLbv64FIdB4Nzu5ct3qojNQ58r5sK01tg5UoFIJYslaVrg== -"@metamask/abi-utils@^2.0.2", "@metamask/abi-utils@^2.0.4": +"@metamask/abi-utils@^2.0.3", "@metamask/abi-utils@^2.0.4": version "2.0.4" resolved "https://registry.yarnpkg.com/@metamask/abi-utils/-/abi-utils-2.0.4.tgz#20908c1d910f7a17a89fdf5778a5c59d5cb8b8be" integrity sha512-StnIgUB75x7a7AgUhiaUZDpCsqGp7VkNnZh2XivXkJ6mPkE83U8ARGQj5MbRis7VJY8BC5V1AbB1fjdh0hupPQ== @@ -4320,7 +4320,7 @@ "@metamask/controller-utils" "^11.3.0" "@metamask/utils" "^9.1.0" -"@metamask/approval-controller@^7.0.0", "@metamask/approval-controller@^7.0.1", "@metamask/approval-controller@^7.0.2", "@metamask/approval-controller@^7.1.0": +"@metamask/approval-controller@^7.0.0", "@metamask/approval-controller@^7.0.2", "@metamask/approval-controller@^7.1.0": version "7.1.0" resolved "https://registry.yarnpkg.com/@metamask/approval-controller/-/approval-controller-7.1.0.tgz#34b07bc4eaf6938b15f9d915c6885d4a5c0a5205" integrity sha512-dhqUeX8wMzW88U+Vgr7oKf0Vouol10ncB3lxmvWyC1VZJhSOdO3VUkn0tH1lzt3ybxYVMOkPaB3gfdksfnNRyA== @@ -4330,37 +4330,33 @@ "@metamask/utils" "^9.1.0" nanoid "^3.1.31" -"@metamask/assets-controllers@^36.0.0": - version "36.0.0" - resolved "https://registry.yarnpkg.com/@metamask/assets-controllers/-/assets-controllers-36.0.0.tgz#17f48d65b0b444aae742b8221fd16513da148458" - integrity sha512-leYjYcH6TIxDzrQebJjeBc02H2YMx9JfWsGQ9tZHydB0BF4st3pDUZYneVZRfR2XlIAyoVS7cSgvfdXZ+tmstQ== +"@metamask/assets-controllers@^37.0.0": + version "37.0.0" + resolved "https://registry.yarnpkg.com/@metamask/assets-controllers/-/assets-controllers-37.0.0.tgz#89ab8794118066892f5da1370b4051c0e850b204" + integrity sha512-84rF+Bg65ocPP0MWHJQgWchsqnFXARck60SirulSVuYMPA2chwe276r/qe1ZtLlMxQASROCRNayjAR4VK/Aj5Q== dependencies: "@ethereumjs/util" "^8.1.0" "@ethersproject/address" "^5.7.0" "@ethersproject/bignumber" "^5.7.0" "@ethersproject/contracts" "^5.7.0" "@ethersproject/providers" "^5.7.0" - "@metamask/abi-utils" "^2.0.2" - "@metamask/accounts-controller" "^17.2.0" - "@metamask/approval-controller" "^7.0.1" - "@metamask/base-controller" "^6.0.1" + "@metamask/abi-utils" "^2.0.3" + "@metamask/base-controller" "^6.0.2" "@metamask/contract-metadata" "^2.4.0" - "@metamask/controller-utils" "^11.0.1" + "@metamask/controller-utils" "^11.0.2" "@metamask/eth-query" "^4.0.0" - "@metamask/keyring-controller" "^17.1.0" "@metamask/metamask-eth-abis" "^3.1.1" - "@metamask/network-controller" "^20.0.0" - "@metamask/polling-controller" "^9.0.0" - "@metamask/preferences-controller" "^13.0.0" + "@metamask/polling-controller" "^9.0.1" "@metamask/rpc-errors" "^6.3.1" - "@metamask/utils" "^9.0.0" + "@metamask/utils" "^9.1.0" "@types/bn.js" "^5.1.5" "@types/uuid" "^8.3.0" async-mutex "^0.5.0" bn.js "^5.2.1" cockatiel "^3.1.2" + immer "^9.0.6" lodash "^4.17.21" - multiformats "^9.5.2" + multiformats "^13.1.0" single-call-balance-checker-abi "^1.0.0" uuid "^8.3.2" @@ -4388,7 +4384,7 @@ "@metamask/utils" "^8.3.0" immer "^9.0.6" -"@metamask/base-controller@^6.0.0", "@metamask/base-controller@^6.0.1", "@metamask/base-controller@^6.0.2": +"@metamask/base-controller@^6.0.0", "@metamask/base-controller@^6.0.2": version "6.0.3" resolved "https://registry.yarnpkg.com/@metamask/base-controller/-/base-controller-6.0.3.tgz#9bb4e74234c1de5f99842c343ffa053c08055db1" integrity sha512-neUqsCXRT6QYcZO51y6Y5u9NPTHuxgNsW5Z4h///o1gDdV8lBeIG/b1ne+QPK422DZMAm4ChnkG1DDNf4PkErw== @@ -4438,7 +4434,7 @@ resolved "https://registry.yarnpkg.com/@metamask/contract-metadata/-/contract-metadata-2.2.0.tgz#277764d0d56e37180ae7644a9d11eb96295b36fc" integrity sha512-SM6A4C7vXNbVpgMTX67kfW8QWvu3eSXxMZlY5PqZBTkvri1s9zgQ0uwRkK5r2VXNEoVmXCDnnEX/tX5EzzgNUQ== -"@metamask/controller-utils@^11.0.0", "@metamask/controller-utils@^11.0.1", "@metamask/controller-utils@^11.0.2", "@metamask/controller-utils@^11.3.0": +"@metamask/controller-utils@^11.0.0", "@metamask/controller-utils@^11.0.2", "@metamask/controller-utils@^11.3.0": version "11.3.0" resolved "https://registry.yarnpkg.com/@metamask/controller-utils/-/controller-utils-11.3.0.tgz#530fd22289f717b752b4a7b6e504e1f2911b30a4" integrity sha512-5b+Jg9sKKESzvQcuipHC1D7KSh98MVIi7hXQUk7iX+YVMl4KoKDv94Bl+li8g+jCBshMOV9bRMRh25/hdEvTZQ== @@ -4858,7 +4854,7 @@ bech32 "^2.0.0" uuid "^9.0.1" -"@metamask/keyring-controller@^17.1.0", "@metamask/keyring-controller@^17.2.1", "@metamask/keyring-controller@^17.2.2": +"@metamask/keyring-controller@^17.2.1", "@metamask/keyring-controller@^17.2.2": version "17.2.2" resolved "https://registry.yarnpkg.com/@metamask/keyring-controller/-/keyring-controller-17.2.2.tgz#944bc693305b4a6e4f1e73739a82c4bc6573dd9a" integrity sha512-Shqk0ybcTPrHQLlBJ1V+InuYC7nD3/a6Ws0XCcBCOfkLTXvtSooKIWBioK83XlHMHkfsM6+bySxSqXJVgJvBZw== @@ -5146,7 +5142,7 @@ fast-json-stable-stringify "^2.1.0" uuid "^8.3.2" -"@metamask/polling-controller@^9.0.0": +"@metamask/polling-controller@^9.0.1": version "9.0.1" resolved "https://registry.yarnpkg.com/@metamask/polling-controller/-/polling-controller-9.0.1.tgz#3d72ab925bace25f5f6b2c5209777708b1fc168e" integrity sha512-GmTqEA7RlJ6fO2G15HW1hUVay1m+CQAsWJ835rU8Udz8FmIBTWPQVRMITq0bQexTHi18YZHgm1sx0iwrPscS3Q== @@ -5189,14 +5185,6 @@ "@metamask/base-controller" "^5.0.2" "@metamask/controller-utils" "^9.1.0" -"@metamask/preferences-controller@^13.0.0": - version "13.0.3" - resolved "https://registry.yarnpkg.com/@metamask/preferences-controller/-/preferences-controller-13.0.3.tgz#b38dcda227436e935442989e2be5652316d29f8a" - integrity sha512-gNl+sTzvKFRj80h+fLNHGh72LCowBX1LvjZXzqHoTP4CZiHvMCO1vsQZY0Tboh7en9kwah1OdbQVzLRCgOsSIA== - dependencies: - "@metamask/base-controller" "^7.0.1" - "@metamask/controller-utils" "^11.3.0" - "@metamask/profile-sync-controller@^0.9.7": version "0.9.7" resolved "https://registry.yarnpkg.com/@metamask/profile-sync-controller/-/profile-sync-controller-0.9.7.tgz#d5e78cb8004f0dcb8637410bb8b54911e8f2c0a7" @@ -22956,7 +22944,12 @@ multicodec@^1.0.0: buffer "^5.6.0" varint "^5.0.0" -multiformats@^9.4.2, multiformats@^9.5.2: +multiformats@^13.1.0: + version "13.3.0" + resolved "https://registry.yarnpkg.com/multiformats/-/multiformats-13.3.0.tgz#1f5188bc7c4fe08ff829ae1c18dc33409042fb71" + integrity sha512-CBiqvsufgmpo01VT5ze94O+uc+Pbf6f/sThlvWss0sBZmAOu6GQn5usrYV2sf2mr17FWYc0rO8c/CNe2T90QAA== + +multiformats@^9.4.2: version "9.9.0" resolved "https://registry.yarnpkg.com/multiformats/-/multiformats-9.9.0.tgz#c68354e7d21037a8f1f8833c8ccd68618e8f1d37" integrity sha512-HoMUjhH9T8DDBNT+6xzkrd9ga/XiBI4xLr58LJACwK6G3HTOPeMz4nB4KJs33L2BelrIJa7P0VuNaVF3hMYfjg==