@metamask/assets-controllers 103.1.1 → 104.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +73 -54
- package/dist/AccountTrackerController.cjs +5 -3
- package/dist/AccountTrackerController.cjs.map +1 -1
- package/dist/AccountTrackerController.d.cts.map +1 -1
- package/dist/AccountTrackerController.d.mts.map +1 -1
- package/dist/AccountTrackerController.mjs +5 -3
- package/dist/AccountTrackerController.mjs.map +1 -1
- package/dist/AssetsContractController.cjs +1 -1
- package/dist/AssetsContractController.cjs.map +1 -1
- package/dist/AssetsContractController.d.cts +1 -1
- package/dist/AssetsContractController.d.cts.map +1 -1
- package/dist/AssetsContractController.d.mts +1 -1
- package/dist/AssetsContractController.d.mts.map +1 -1
- package/dist/AssetsContractController.mjs +1 -1
- package/dist/AssetsContractController.mjs.map +1 -1
- package/dist/MultichainAssetsController/MultichainAssetsController.cjs +150 -58
- package/dist/MultichainAssetsController/MultichainAssetsController.cjs.map +1 -1
- package/dist/MultichainAssetsController/MultichainAssetsController.d.cts +20 -3
- package/dist/MultichainAssetsController/MultichainAssetsController.d.cts.map +1 -1
- package/dist/MultichainAssetsController/MultichainAssetsController.d.mts +20 -3
- package/dist/MultichainAssetsController/MultichainAssetsController.d.mts.map +1 -1
- package/dist/MultichainAssetsController/MultichainAssetsController.mjs +150 -58
- package/dist/MultichainAssetsController/MultichainAssetsController.mjs.map +1 -1
- package/dist/MultichainAssetsRatesController/MultichainAssetsRatesController.cjs.map +1 -1
- package/dist/MultichainAssetsRatesController/MultichainAssetsRatesController.d.cts +1 -1
- package/dist/MultichainAssetsRatesController/MultichainAssetsRatesController.d.cts.map +1 -1
- package/dist/MultichainAssetsRatesController/MultichainAssetsRatesController.d.mts +1 -1
- package/dist/MultichainAssetsRatesController/MultichainAssetsRatesController.d.mts.map +1 -1
- package/dist/MultichainAssetsRatesController/MultichainAssetsRatesController.mjs.map +1 -1
- package/dist/NftController.cjs +49 -39
- package/dist/NftController.cjs.map +1 -1
- package/dist/NftController.d.cts +12 -7
- package/dist/NftController.d.cts.map +1 -1
- package/dist/NftController.d.mts +12 -7
- package/dist/NftController.d.mts.map +1 -1
- package/dist/NftController.mjs +49 -39
- package/dist/NftController.mjs.map +1 -1
- package/dist/RatesController/RatesController.cjs.map +1 -1
- package/dist/RatesController/RatesController.d.cts.map +1 -1
- package/dist/RatesController/RatesController.d.mts.map +1 -1
- package/dist/RatesController/RatesController.mjs.map +1 -1
- package/dist/RatesController/types.cjs.map +1 -1
- package/dist/RatesController/types.d.cts +1 -1
- package/dist/RatesController/types.d.cts.map +1 -1
- package/dist/RatesController/types.d.mts +1 -1
- package/dist/RatesController/types.d.mts.map +1 -1
- package/dist/RatesController/types.mjs.map +1 -1
- package/dist/TokenSearchDiscoveryDataController/TokenSearchDiscoveryDataController.cjs.map +1 -1
- package/dist/TokenSearchDiscoveryDataController/TokenSearchDiscoveryDataController.d.cts +1 -1
- package/dist/TokenSearchDiscoveryDataController/TokenSearchDiscoveryDataController.d.cts.map +1 -1
- package/dist/TokenSearchDiscoveryDataController/TokenSearchDiscoveryDataController.d.mts +1 -1
- package/dist/TokenSearchDiscoveryDataController/TokenSearchDiscoveryDataController.d.mts.map +1 -1
- package/dist/TokenSearchDiscoveryDataController/TokenSearchDiscoveryDataController.mjs.map +1 -1
- package/dist/multi-chain-accounts-service/api-balance-fetcher.cjs +1 -1
- package/dist/multi-chain-accounts-service/api-balance-fetcher.cjs.map +1 -1
- package/dist/multi-chain-accounts-service/api-balance-fetcher.mjs +1 -1
- package/dist/multi-chain-accounts-service/api-balance-fetcher.mjs.map +1 -1
- package/dist/multicall.cjs +220 -1
- package/dist/multicall.cjs.map +1 -1
- package/dist/multicall.d.cts +22 -0
- package/dist/multicall.d.cts.map +1 -1
- package/dist/multicall.d.mts +22 -0
- package/dist/multicall.d.mts.map +1 -1
- package/dist/multicall.mjs +218 -0
- package/dist/multicall.mjs.map +1 -1
- package/dist/rpc-service/rpc-balance-fetcher.cjs.map +1 -1
- package/dist/rpc-service/rpc-balance-fetcher.mjs.map +1 -1
- package/dist/selectors/token-selectors.cjs +1 -1
- package/dist/selectors/token-selectors.cjs.map +1 -1
- package/dist/selectors/token-selectors.d.cts +18 -18
- package/dist/selectors/token-selectors.d.cts.map +1 -1
- package/dist/selectors/token-selectors.d.mts +18 -18
- package/dist/selectors/token-selectors.d.mts.map +1 -1
- package/dist/selectors/token-selectors.mjs +1 -1
- package/dist/selectors/token-selectors.mjs.map +1 -1
- package/dist/token-prices-service/codefi-v2.cjs.map +1 -1
- package/dist/token-prices-service/codefi-v2.d.cts +1 -1
- package/dist/token-prices-service/codefi-v2.d.cts.map +1 -1
- package/dist/token-prices-service/codefi-v2.d.mts +1 -1
- package/dist/token-prices-service/codefi-v2.d.mts.map +1 -1
- package/dist/token-prices-service/codefi-v2.mjs.map +1 -1
- package/package.json +26 -25
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NftController.d.cts","sourceRoot":"","sources":["../src/NftController.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"NftController.d.cts","sourceRoot":"","sources":["../src/NftController.ts"],"names":[],"mappings":"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"}
|
package/dist/NftController.d.mts
CHANGED
|
@@ -7,7 +7,7 @@ import type { NetworkClientId, NetworkControllerFindNetworkClientIdByChainIdActi
|
|
|
7
7
|
import type { PhishingControllerBulkScanUrlsAction } from "@metamask/phishing-controller";
|
|
8
8
|
import type { PreferencesControllerStateChangeEvent } from "@metamask/preferences-controller";
|
|
9
9
|
import type { Hex } from "@metamask/utils";
|
|
10
|
-
import type {
|
|
10
|
+
import type { AssetsContractControllerGetERC1155TokenURIAction, AssetsContractControllerGetERC721AssetNameAction, AssetsContractControllerGetERC721AssetSymbolAction, AssetsContractControllerGetERC721TokenURIAction } from "./AssetsContractController-method-action-types.mjs";
|
|
11
11
|
import { Source } from "./constants.mjs";
|
|
12
12
|
import type { Collection, Attributes, LastSale, TopBid } from "./NftDetectionController.mjs";
|
|
13
13
|
export type NFTStandardType = 'ERC721' | 'ERC1155';
|
|
@@ -185,7 +185,7 @@ export type NftControllerActions = NftControllerGetStateAction;
|
|
|
185
185
|
/**
|
|
186
186
|
* The external actions available to the {@link NftController}.
|
|
187
187
|
*/
|
|
188
|
-
export type AllowedActions = ApprovalControllerAddRequestAction | AccountsControllerGetAccountAction | AccountsControllerGetSelectedAccountAction | NetworkControllerGetNetworkClientByIdAction | AssetsContractControllerGetERC721AssetNameAction | AssetsContractControllerGetERC721AssetSymbolAction | AssetsContractControllerGetERC721TokenURIAction |
|
|
188
|
+
export type AllowedActions = ApprovalControllerAddRequestAction | AccountsControllerGetAccountAction | AccountsControllerGetSelectedAccountAction | NetworkControllerGetNetworkClientByIdAction | AssetsContractControllerGetERC721AssetNameAction | AssetsContractControllerGetERC721AssetSymbolAction | AssetsContractControllerGetERC721TokenURIAction | AssetsContractControllerGetERC1155TokenURIAction | NetworkControllerFindNetworkClientIdByChainIdAction | PhishingControllerBulkScanUrlsAction;
|
|
189
189
|
export type AllowedEvents = PreferencesControllerStateChangeEvent | AccountsControllerSelectedEvmAccountChangeEvent;
|
|
190
190
|
export type NftControllerStateChangeEvent = ControllerStateChangeEvent<typeof controllerName, NftControllerState>;
|
|
191
191
|
export type NftControllerEvents = NftControllerStateChangeEvent;
|
|
@@ -252,9 +252,14 @@ export declare class NftController extends BaseController<typeof controllerName,
|
|
|
252
252
|
* @param nftAddress - NFT contract address.
|
|
253
253
|
* @param tokenId - NFT token ID.
|
|
254
254
|
* @param networkClientId - The networkClientId that can be used to identify the network client to use for this request.
|
|
255
|
+
* @param options - Optional parameters.
|
|
256
|
+
* @param options.standard - The NFT standard ('ERC721' or 'ERC1155'). When provided, only the
|
|
257
|
+
* relevant ownership check is performed, halving the number of RPC subcalls.
|
|
255
258
|
* @returns Promise resolving the NFT ownership.
|
|
256
259
|
*/
|
|
257
|
-
isNftOwner(ownerAddress: string, nftAddress: string, tokenId: string, networkClientId: NetworkClientId
|
|
260
|
+
isNftOwner(ownerAddress: string, nftAddress: string, tokenId: string, networkClientId: NetworkClientId, { standard }?: {
|
|
261
|
+
standard?: string | null;
|
|
262
|
+
}): Promise<boolean>;
|
|
258
263
|
/**
|
|
259
264
|
* Verifies currently selected address owns entered NFT address/tokenId combo and
|
|
260
265
|
* adds the NFT and respective NFT contract to the stored NFT and NFT contracts lists.
|
|
@@ -346,21 +351,21 @@ export declare class NftController extends BaseController<typeof controllerName,
|
|
|
346
351
|
clearIgnoredNfts(): void;
|
|
347
352
|
/**
|
|
348
353
|
* Checks whether input NFT is still owned by the user
|
|
349
|
-
*
|
|
354
|
+
* and updates the isCurrentlyOwned value on the NFT object accordingly.
|
|
350
355
|
*
|
|
351
356
|
* @param nft - The NFT object to check and update.
|
|
352
|
-
* @param batch - A boolean indicating whether this method is being called as part of a batch or single update.
|
|
353
357
|
* @param networkClientId - The networkClientId that can be used to identify the network client to use for this request.
|
|
354
|
-
* @param accountParams - The userAddress
|
|
358
|
+
* @param accountParams - The userAddress to check ownership against.
|
|
355
359
|
* @param accountParams.userAddress - the address passed through the confirmed transaction flow to ensure assets are stored to the correct account
|
|
356
360
|
* @returns the NFT with the updated isCurrentlyOwned value
|
|
357
361
|
*/
|
|
358
|
-
checkAndUpdateSingleNftOwnershipStatus(nft: Nft,
|
|
362
|
+
checkAndUpdateSingleNftOwnershipStatus(nft: Nft, networkClientId: NetworkClientId, { userAddress }?: {
|
|
359
363
|
userAddress?: string;
|
|
360
364
|
}): Promise<Nft>;
|
|
361
365
|
/**
|
|
362
366
|
* Checks whether NFTs associated with current selectedAddress/chainId combination are still owned by the user
|
|
363
367
|
* And updates the isCurrentlyOwned value on each accordingly.
|
|
368
|
+
* Uses Multicall3 to batch all ownership checks into a single RPC request when available.
|
|
364
369
|
*
|
|
365
370
|
* @param networkClientId - The networkClientId that can be used to identify the network client to use for this request.
|
|
366
371
|
* @param options - an object of arguments
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NftController.d.mts","sourceRoot":"","sources":["../src/NftController.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"NftController.d.mts","sourceRoot":"","sources":["../src/NftController.ts"],"names":[],"mappings":"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"}
|
package/dist/NftController.mjs
CHANGED
|
@@ -17,6 +17,7 @@ function $importDefault(module) {
|
|
|
17
17
|
return module;
|
|
18
18
|
}
|
|
19
19
|
import { isAddress } from "@ethersproject/address";
|
|
20
|
+
import { Web3Provider } from "@ethersproject/providers";
|
|
20
21
|
import { BaseController } from "@metamask/base-controller";
|
|
21
22
|
import { safelyExecute, handleFetch, toChecksumHexAddress, BNToHex, fetchWithErrorHandling, IPFS_DEFAULT_GATEWAY_URL, ERC721, ERC1155, ApprovalType, NFT_API_BASE_URL, NFT_API_VERSION, convertHexToDecimal, toHex } from "@metamask/controller-utils";
|
|
22
23
|
import { RecommendedAction } from "@metamask/phishing-controller";
|
|
@@ -28,6 +29,7 @@ const BN = $importDefault($BN);
|
|
|
28
29
|
import { v4 as random } from "uuid";
|
|
29
30
|
import { compareNftMetadata, getFormattedIpfsUrl, hasNewCollectionFields, reduceInBatchesSerially } from "./assetsUtil.mjs";
|
|
30
31
|
import { Source } from "./constants.mjs";
|
|
32
|
+
import { getNftOwnershipForMultipleNfts } from "./multicall.mjs";
|
|
31
33
|
const nftControllerMetadata = {
|
|
32
34
|
allNftContracts: {
|
|
33
35
|
includeInStateLogs: false,
|
|
@@ -165,26 +167,27 @@ export class NftController extends BaseController {
|
|
|
165
167
|
* @param nftAddress - NFT contract address.
|
|
166
168
|
* @param tokenId - NFT token ID.
|
|
167
169
|
* @param networkClientId - The networkClientId that can be used to identify the network client to use for this request.
|
|
170
|
+
* @param options - Optional parameters.
|
|
171
|
+
* @param options.standard - The NFT standard ('ERC721' or 'ERC1155'). When provided, only the
|
|
172
|
+
* relevant ownership check is performed, halving the number of RPC subcalls.
|
|
168
173
|
* @returns Promise resolving the NFT ownership.
|
|
169
174
|
*/
|
|
170
|
-
async isNftOwner(ownerAddress, nftAddress, tokenId, networkClientId) {
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
catch {
|
|
185
|
-
// Ignore ERC-1155 contract error
|
|
175
|
+
async isNftOwner(ownerAddress, nftAddress, tokenId, networkClientId, { standard } = {}) {
|
|
176
|
+
const client = this.messenger.call('NetworkController:getNetworkClientById', networkClientId);
|
|
177
|
+
const provider = new Web3Provider(client.provider);
|
|
178
|
+
const { chainId } = client.configuration;
|
|
179
|
+
const [result] = await getNftOwnershipForMultipleNfts([
|
|
180
|
+
{
|
|
181
|
+
nftAddress,
|
|
182
|
+
tokenId,
|
|
183
|
+
userAddress: ownerAddress,
|
|
184
|
+
standard: standard ?? null,
|
|
185
|
+
},
|
|
186
|
+
], chainId, provider);
|
|
187
|
+
if (result.isOwned === undefined) {
|
|
188
|
+
throw new Error(`Unable to verify ownership. Possibly because the standard is not supported or the user's currently selected network does not match the chain of the asset in question.`);
|
|
186
189
|
}
|
|
187
|
-
|
|
190
|
+
return result.isOwned;
|
|
188
191
|
}
|
|
189
192
|
/**
|
|
190
193
|
* Verifies currently selected address owns entered NFT address/tokenId combo and
|
|
@@ -461,22 +464,21 @@ export class NftController extends BaseController {
|
|
|
461
464
|
}
|
|
462
465
|
/**
|
|
463
466
|
* Checks whether input NFT is still owned by the user
|
|
464
|
-
*
|
|
467
|
+
* and updates the isCurrentlyOwned value on the NFT object accordingly.
|
|
465
468
|
*
|
|
466
469
|
* @param nft - The NFT object to check and update.
|
|
467
|
-
* @param batch - A boolean indicating whether this method is being called as part of a batch or single update.
|
|
468
470
|
* @param networkClientId - The networkClientId that can be used to identify the network client to use for this request.
|
|
469
|
-
* @param accountParams - The userAddress
|
|
471
|
+
* @param accountParams - The userAddress to check ownership against.
|
|
470
472
|
* @param accountParams.userAddress - the address passed through the confirmed transaction flow to ensure assets are stored to the correct account
|
|
471
473
|
* @returns the NFT with the updated isCurrentlyOwned value
|
|
472
474
|
*/
|
|
473
|
-
async checkAndUpdateSingleNftOwnershipStatus(nft,
|
|
475
|
+
async checkAndUpdateSingleNftOwnershipStatus(nft, networkClientId, { userAddress } = {}) {
|
|
474
476
|
const addressToSearch = __classPrivateFieldGet(this, _NftController_instances, "m", _NftController_getAddressOrSelectedAddress).call(this, userAddress);
|
|
475
477
|
const { configuration: { chainId }, } = this.messenger.call('NetworkController:getNetworkClientById', networkClientId);
|
|
476
478
|
const { address, tokenId } = nft;
|
|
477
479
|
let isOwned = nft.isCurrentlyOwned;
|
|
478
480
|
try {
|
|
479
|
-
isOwned = await this.isNftOwner(addressToSearch, address, tokenId, networkClientId);
|
|
481
|
+
isOwned = await this.isNftOwner(addressToSearch, address, tokenId, networkClientId, { standard: nft.standard });
|
|
480
482
|
}
|
|
481
483
|
catch {
|
|
482
484
|
// ignore error
|
|
@@ -487,21 +489,12 @@ export class NftController extends BaseController {
|
|
|
487
489
|
...nft,
|
|
488
490
|
isCurrentlyOwned: isOwned,
|
|
489
491
|
};
|
|
490
|
-
if (batch) {
|
|
491
|
-
return updatedNft;
|
|
492
|
-
}
|
|
493
|
-
// if this is not part of a batched update we update this one NFT in state
|
|
494
492
|
const { allNfts } = this.state;
|
|
495
|
-
const nfts = [...(allNfts[addressToSearch]?.[chainId]
|
|
493
|
+
const nfts = [...(allNfts[addressToSearch]?.[chainId] ?? [])];
|
|
496
494
|
const indexToUpdate = nfts.findIndex((item) => item.tokenId === tokenId &&
|
|
497
495
|
item.address.toLowerCase() === address.toLowerCase());
|
|
498
496
|
if (indexToUpdate !== -1) {
|
|
499
497
|
nfts[indexToUpdate] = updatedNft;
|
|
500
|
-
this.update((state) => {
|
|
501
|
-
state.allNfts[addressToSearch] = Object.assign({}, state.allNfts[addressToSearch], {
|
|
502
|
-
[chainId]: nfts,
|
|
503
|
-
});
|
|
504
|
-
});
|
|
505
498
|
__classPrivateFieldGet(this, _NftController_instances, "m", _NftController_updateNestedNftState).call(this, nfts, ALL_NFTS_STATE_KEY, {
|
|
506
499
|
userAddress: addressToSearch,
|
|
507
500
|
chainId,
|
|
@@ -512,6 +505,7 @@ export class NftController extends BaseController {
|
|
|
512
505
|
/**
|
|
513
506
|
* Checks whether NFTs associated with current selectedAddress/chainId combination are still owned by the user
|
|
514
507
|
* And updates the isCurrentlyOwned value on each accordingly.
|
|
508
|
+
* Uses Multicall3 to batch all ownership checks into a single RPC request when available.
|
|
515
509
|
*
|
|
516
510
|
* @param networkClientId - The networkClientId that can be used to identify the network client to use for this request.
|
|
517
511
|
* @param options - an object of arguments
|
|
@@ -519,14 +513,30 @@ export class NftController extends BaseController {
|
|
|
519
513
|
*/
|
|
520
514
|
async checkAndUpdateAllNftsOwnershipStatus(networkClientId, { userAddress, } = {}) {
|
|
521
515
|
const addressToSearch = __classPrivateFieldGet(this, _NftController_instances, "m", _NftController_getAddressOrSelectedAddress).call(this, userAddress);
|
|
522
|
-
const
|
|
516
|
+
const client = this.messenger.call('NetworkController:getNetworkClientById', networkClientId);
|
|
517
|
+
const { chainId } = client.configuration;
|
|
523
518
|
const { allNfts } = this.state;
|
|
524
519
|
const nfts = allNfts[addressToSearch]?.[chainId] || [];
|
|
525
|
-
|
|
526
|
-
return
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
520
|
+
if (nfts.length === 0) {
|
|
521
|
+
return;
|
|
522
|
+
}
|
|
523
|
+
const provider = new Web3Provider(client.provider);
|
|
524
|
+
let ownershipResults;
|
|
525
|
+
try {
|
|
526
|
+
ownershipResults = await getNftOwnershipForMultipleNfts(nfts.map((nft) => ({
|
|
527
|
+
nftAddress: nft.address,
|
|
528
|
+
tokenId: nft.tokenId,
|
|
529
|
+
userAddress: addressToSearch,
|
|
530
|
+
standard: nft.standard,
|
|
531
|
+
})), chainId, provider);
|
|
532
|
+
}
|
|
533
|
+
catch {
|
|
534
|
+
return;
|
|
535
|
+
}
|
|
536
|
+
const updatedNfts = nfts.filter((_nft, index) => {
|
|
537
|
+
const { isOwned } = ownershipResults[index];
|
|
538
|
+
return isOwned !== false;
|
|
539
|
+
});
|
|
530
540
|
__classPrivateFieldGet(this, _NftController_instances, "m", _NftController_updateNestedNftState).call(this, updatedNfts, ALL_NFTS_STATE_KEY, {
|
|
531
541
|
userAddress: addressToSearch,
|
|
532
542
|
chainId,
|
|
@@ -1160,7 +1170,7 @@ async function _NftController_addNftContracts(userAddress, contracts) {
|
|
|
1160
1170
|
}
|
|
1161
1171
|
// Check if the user owns the suggested NFT
|
|
1162
1172
|
try {
|
|
1163
|
-
const isOwner = await this.isNftOwner(userAddress, contractAddress, tokenId, networkClientId);
|
|
1173
|
+
const isOwner = await this.isNftOwner(userAddress, contractAddress, tokenId, networkClientId, { standard: type });
|
|
1164
1174
|
if (!isOwner) {
|
|
1165
1175
|
throw rpcErrors.invalidInput('Suggested NFT is not owned by the selected account');
|
|
1166
1176
|
}
|