|
| 1 | +diff --git a/node_modules/@metamask/assets-controllers/dist/NftController.cjs b/node_modules/@metamask/assets-controllers/dist/NftController.cjs |
| 2 | +index 3e7b205..00ad856 100644 |
| 3 | +--- a/node_modules/@metamask/assets-controllers/dist/NftController.cjs |
| 4 | ++++ b/node_modules/@metamask/assets-controllers/dist/NftController.cjs |
| 5 | +@@ -13,7 +13,8 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function ( |
| 6 | + var __importDefault = (this && this.__importDefault) || function (mod) { |
| 7 | + return (mod && mod.__esModule) ? mod : { "default": mod }; |
| 8 | + }; |
| 9 | +-var _NftController_instances, _NftController_mutex, _NftController_selectedAccountId, _NftController_ipfsGateway, _NftController_openSeaEnabled, _NftController_useIpfsSubdomains, _NftController_isIpfsGatewayEnabled, _NftController_onNftAdded, _NftController_onPreferencesControllerStateChange, _NftController_onSelectedAccountChange, _NftController_updateNestedNftState, _NftController_getNftCollectionApi, _NftController_getNftInformationFromApi, _NftController_getNftInformationFromTokenURI, _NftController_getNftURIAndStandard, _NftController_getNftInformation, _NftController_getNftContractInformationFromContract, _NftController_getNftContractInformation, _NftController_addIndividualNft, _NftController_addNftContract, _NftController_removeAndIgnoreIndividualNft, _NftController_removeIndividualNft, _NftController_removeNftContract, _NftController_validateWatchNft, _NftController_getAddressOrSelectedAddress, _NftController_updateNftUpdateForAccount, _NftController_bulkSanitizeNftMetadata, _NftController_sanitizeNftMetadata; |
| 10 | ++// Remove once https://github.com/MetaMask/core/pull/4774 is released |
| 11 | ++var _NftController_instances, _NftController_mutex, _NftController_selectedAccountId, _NftController_ipfsGateway, _NftController_displayNftMedia, _NftController_useIpfsSubdomains, _NftController_isIpfsGatewayEnabled, _NftController_onNftAdded, _NftController_onPreferencesControllerStateChange, _NftController_onSelectedAccountChange, _NftController_updateNestedNftState, _NftController_getNftCollectionApi, _NftController_getNftInformationFromApi, _NftController_getNftInformationFromTokenURI, _NftController_getNftURIAndStandard, _NftController_getNftInformation, _NftController_getNftContractInformationFromContract, _NftController_getNftContractInformation, _NftController_addIndividualNft, _NftController_addNftContract, _NftController_removeAndIgnoreIndividualNft, _NftController_removeIndividualNft, _NftController_removeNftContract, _NftController_validateWatchNft, _NftController_getAddressOrSelectedAddress, _NftController_updateNftUpdateForAccount, _NftController_bulkSanitizeNftMetadata, _NftController_sanitizeNftMetadata; |
| 12 | + Object.defineProperty(exports, "__esModule", { value: true }); |
| 13 | + exports.NftController = exports.getDefaultNftControllerState = void 0; |
| 14 | + const address_1 = require("@ethersproject/address"); |
| 15 | +@@ -54,7 +55,8 @@ class NftController extends base_controller_1.BaseController { |
| 16 | + * |
| 17 | + * @param options - The controller options. |
| 18 | + * @param options.ipfsGateway - The configured IPFS gateway. |
| 19 | +- * @param options.openSeaEnabled - Controls whether the OpenSea API is used. |
| 20 | ++ * Remove once https://github.com/MetaMask/core/pull/4774 is released |
| 21 | ++ * @param options.displayNftMedia - Controls whether the NFT API is used. |
| 22 | + * @param options.useIpfsSubdomains - Controls whether IPFS subdomains are used. |
| 23 | + * @param options.isIpfsGatewayEnabled - Controls whether IPFS is enabled or not. |
| 24 | + * @param options.onNftAdded - Callback that is called when an NFT is added. Currently used pass data |
| 25 | +@@ -62,7 +64,7 @@ class NftController extends base_controller_1.BaseController { |
| 26 | + * @param options.messenger - The messenger. |
| 27 | + * @param options.state - Initial state to set on this controller. |
| 28 | + */ |
| 29 | +- constructor({ ipfsGateway = controller_utils_1.IPFS_DEFAULT_GATEWAY_URL, openSeaEnabled = false, useIpfsSubdomains = true, isIpfsGatewayEnabled = true, onNftAdded, messenger, state = {}, }) { |
| 30 | ++ constructor({ ipfsGateway = controller_utils_1.IPFS_DEFAULT_GATEWAY_URL, displayNftMedia = false, useIpfsSubdomains = true, isIpfsGatewayEnabled = true, onNftAdded, messenger, state = {}, }) { |
| 31 | + super({ |
| 32 | + name: controllerName, |
| 33 | + metadata: nftControllerMetadata, |
| 34 | +@@ -76,13 +78,13 @@ class NftController extends base_controller_1.BaseController { |
| 35 | + _NftController_mutex.set(this, new async_mutex_1.Mutex()); |
| 36 | + _NftController_selectedAccountId.set(this, void 0); |
| 37 | + _NftController_ipfsGateway.set(this, void 0); |
| 38 | +- _NftController_openSeaEnabled.set(this, void 0); |
| 39 | ++ _NftController_displayNftMedia.set(this, void 0); |
| 40 | + _NftController_useIpfsSubdomains.set(this, void 0); |
| 41 | + _NftController_isIpfsGatewayEnabled.set(this, void 0); |
| 42 | + _NftController_onNftAdded.set(this, void 0); |
| 43 | + __classPrivateFieldSet(this, _NftController_selectedAccountId, this.messagingSystem.call('AccountsController:getSelectedAccount').id, "f"); |
| 44 | + __classPrivateFieldSet(this, _NftController_ipfsGateway, ipfsGateway, "f"); |
| 45 | +- __classPrivateFieldSet(this, _NftController_openSeaEnabled, openSeaEnabled, "f"); |
| 46 | ++ __classPrivateFieldSet(this, _NftController_displayNftMedia, displayNftMedia, "f"); |
| 47 | + __classPrivateFieldSet(this, _NftController_useIpfsSubdomains, useIpfsSubdomains, "f"); |
| 48 | + __classPrivateFieldSet(this, _NftController_isIpfsGatewayEnabled, isIpfsGatewayEnabled, "f"); |
| 49 | + __classPrivateFieldSet(this, _NftController_onNftAdded, onNftAdded, "f"); |
| 50 | +@@ -615,26 +617,26 @@ class NftController extends base_controller_1.BaseController { |
| 51 | + } |
| 52 | + } |
| 53 | + exports.NftController = NftController; |
| 54 | +-_NftController_mutex = new WeakMap(), _NftController_selectedAccountId = new WeakMap(), _NftController_ipfsGateway = new WeakMap(), _NftController_openSeaEnabled = new WeakMap(), _NftController_useIpfsSubdomains = new WeakMap(), _NftController_isIpfsGatewayEnabled = new WeakMap(), _NftController_onNftAdded = new WeakMap(), _NftController_instances = new WeakSet(), _NftController_onPreferencesControllerStateChange = |
| 55 | ++_NftController_mutex = new WeakMap(), _NftController_selectedAccountId = new WeakMap(), _NftController_ipfsGateway = new WeakMap(), _NftController_displayNftMedia = new WeakMap(), _NftController_useIpfsSubdomains = new WeakMap(), _NftController_isIpfsGatewayEnabled = new WeakMap(), _NftController_onNftAdded = new WeakMap(), _NftController_instances = new WeakSet(), _NftController_onPreferencesControllerStateChange = |
| 56 | + /** |
| 57 | + * Handles the state change of the preference controller. |
| 58 | + * |
| 59 | + * @param preferencesState - The new state of the preference controller. |
| 60 | + * @param preferencesState.ipfsGateway - The configured IPFS gateway. |
| 61 | +- * @param preferencesState.openSeaEnabled - Controls whether the OpenSea API is used. |
| 62 | ++ * @param preferencesState.displayNftMedia - Controls whether the NFT API is used. |
| 63 | + * @param preferencesState.isIpfsGatewayEnabled - Controls whether IPFS is enabled or not. |
| 64 | + */ |
| 65 | +-async function _NftController_onPreferencesControllerStateChange({ ipfsGateway, openSeaEnabled, isIpfsGatewayEnabled, }) { |
| 66 | ++async function _NftController_onPreferencesControllerStateChange({ ipfsGateway, displayNftMedia, isIpfsGatewayEnabled, }) { |
| 67 | + const selectedAccount = this.messagingSystem.call('AccountsController:getSelectedAccount'); |
| 68 | + __classPrivateFieldSet(this, _NftController_selectedAccountId, selectedAccount.id, "f"); |
| 69 | + // Get current state values |
| 70 | + if (__classPrivateFieldGet(this, _NftController_ipfsGateway, "f") !== ipfsGateway || |
| 71 | +- __classPrivateFieldGet(this, _NftController_openSeaEnabled, "f") !== openSeaEnabled || |
| 72 | ++ __classPrivateFieldGet(this, _NftController_displayNftMedia, "f") !== displayNftMedia || |
| 73 | + __classPrivateFieldGet(this, _NftController_isIpfsGatewayEnabled, "f") !== isIpfsGatewayEnabled) { |
| 74 | + __classPrivateFieldSet(this, _NftController_ipfsGateway, ipfsGateway, "f"); |
| 75 | +- __classPrivateFieldSet(this, _NftController_openSeaEnabled, openSeaEnabled, "f"); |
| 76 | ++ __classPrivateFieldSet(this, _NftController_displayNftMedia, displayNftMedia, "f"); |
| 77 | + __classPrivateFieldSet(this, _NftController_isIpfsGatewayEnabled, isIpfsGatewayEnabled, "f"); |
| 78 | +- const needsUpdateNftMetadata = (isIpfsGatewayEnabled && ipfsGateway !== '') || openSeaEnabled; |
| 79 | ++ const needsUpdateNftMetadata = (isIpfsGatewayEnabled && ipfsGateway !== '') || displayNftMedia; |
| 80 | + if (needsUpdateNftMetadata && selectedAccount) { |
| 81 | + await __classPrivateFieldGet(this, _NftController_instances, "m", _NftController_updateNftUpdateForAccount).call(this, selectedAccount); |
| 82 | + } |
| 83 | +@@ -649,7 +651,7 @@ async function _NftController_onSelectedAccountChange(internalAccount) { |
| 84 | + const oldSelectedAccountId = __classPrivateFieldGet(this, _NftController_selectedAccountId, "f"); |
| 85 | + __classPrivateFieldSet(this, _NftController_selectedAccountId, internalAccount.id, "f"); |
| 86 | + const needsUpdateNftMetadata = ((__classPrivateFieldGet(this, _NftController_isIpfsGatewayEnabled, "f") && __classPrivateFieldGet(this, _NftController_ipfsGateway, "f") !== '') || |
| 87 | +- __classPrivateFieldGet(this, _NftController_openSeaEnabled, "f")) && |
| 88 | ++ __classPrivateFieldGet(this, _NftController_displayNftMedia, "f")) && |
| 89 | + oldSelectedAccountId !== internalAccount.id; |
| 90 | + if (needsUpdateNftMetadata) { |
| 91 | + await __classPrivateFieldGet(this, _NftController_instances, "m", _NftController_updateNftUpdateForAccount).call(this, internalAccount); |
| 92 | +@@ -724,6 +726,7 @@ async function _NftController_getNftInformationFromApi(contractAddress, tokenId) |
| 93 | + description: null, |
| 94 | + image: null, |
| 95 | + standard: null, |
| 96 | ++ error: 'Opensea import error', |
| 97 | + }; |
| 98 | + } |
| 99 | + // if we've reached this point, we have successfully fetched some data for nftInformation |
| 100 | +@@ -766,9 +769,10 @@ async function _NftController_getNftInformationFromTokenURI(contractAddress, tok |
| 101 | + standard: standard || null, |
| 102 | + favorite: false, |
| 103 | + tokenURI: tokenURI ?? null, |
| 104 | ++ error: 'URI import error', |
| 105 | + }; |
| 106 | + } |
| 107 | +- const isDisplayNFTMediaToggleEnabled = __classPrivateFieldGet(this, _NftController_openSeaEnabled, "f"); |
| 108 | ++ const isDisplayNFTMediaToggleEnabled = __classPrivateFieldGet(this, _NftController_displayNftMedia, "f"); |
| 109 | + if (!hasIpfsTokenURI && !isDisplayNFTMediaToggleEnabled) { |
| 110 | + return { |
| 111 | + image: null, |
| 112 | +@@ -777,6 +781,7 @@ async function _NftController_getNftInformationFromTokenURI(contractAddress, tok |
| 113 | + standard: standard || null, |
| 114 | + favorite: false, |
| 115 | + tokenURI: tokenURI ?? null, |
| 116 | ++ error: 'URI import error', |
| 117 | + }; |
| 118 | + } |
| 119 | + if (hasIpfsTokenURI) { |
| 120 | +@@ -868,10 +873,22 @@ async function _NftController_getNftInformation(contractAddress, tokenId, networ |
| 121 | + const { configuration: { chainId }, } = this.messagingSystem.call('NetworkController:getNetworkClientById', networkClientId); |
| 122 | + const [blockchainMetadata, nftApiMetadata] = await Promise.all([ |
| 123 | + (0, controller_utils_1.safelyExecute)(() => __classPrivateFieldGet(this, _NftController_instances, "m", _NftController_getNftInformationFromTokenURI).call(this, contractAddress, tokenId, networkClientId)), |
| 124 | +- __classPrivateFieldGet(this, _NftController_openSeaEnabled, "f") && chainId === '0x1' |
| 125 | ++ __classPrivateFieldGet(this, _NftController_displayNftMedia, "f") && chainId === '0x1' |
| 126 | + ? (0, controller_utils_1.safelyExecute)(() => __classPrivateFieldGet(this, _NftController_instances, "m", _NftController_getNftInformationFromApi).call(this, contractAddress, tokenId)) |
| 127 | + : undefined, |
| 128 | + ]); |
| 129 | ++ if (blockchainMetadata?.error && nftApiMetadata?.error) { |
| 130 | ++ return { |
| 131 | ++ image: null, |
| 132 | ++ name: null, |
| 133 | ++ description: null, |
| 134 | ++ standard: blockchainMetadata.standard ?? null, |
| 135 | ++ favorite: false, |
| 136 | ++ tokenURI: blockchainMetadata.tokenURI ?? null, |
| 137 | ++ error: 'Both import failed', |
| 138 | ++ }; |
| 139 | ++ } |
| 140 | ++ |
| 141 | + const metadata = { |
| 142 | + ...nftApiMetadata, |
| 143 | + name: blockchainMetadata?.name ?? nftApiMetadata?.name ?? null, |
| 144 | +@@ -1017,6 +1034,7 @@ async function _NftController_addIndividualNft(tokenAddress, tokenId, nftMetadat |
| 145 | + tokenId: tokenId.toString(), |
| 146 | + standard: nftMetadata.standard, |
| 147 | + source, |
| 148 | ++ tokenURI: nftMetadata.tokenURI |
| 149 | + }); |
| 150 | + } |
| 151 | + } |
| 152 | +diff --git a/node_modules/@metamask/assets-controllers/dist/NftController.d.cts b/node_modules/@metamask/assets-controllers/dist/NftController.d.cts |
| 153 | +index e16e91f..3168b35 100644 |
| 154 | +--- a/node_modules/@metamask/assets-controllers/dist/NftController.d.cts |
| 155 | ++++ b/node_modules/@metamask/assets-controllers/dist/NftController.d.cts |
| 156 | +@@ -110,6 +110,7 @@ export type NftMetadata = { |
| 157 | + creator?: string; |
| 158 | + transactionId?: string; |
| 159 | + tokenURI?: string | null; |
| 160 | ++ error?: string; |
| 161 | + collection?: Collection; |
| 162 | + address?: string; |
| 163 | + attributes?: Attributes[]; |
0 commit comments