@metamask-previews/assets-controllers 103.1.1-preview-6e596eb → 103.1.1-preview-61580fcee
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 +0 -7
- package/dist/NftController.cjs +74 -44
- package/dist/NftController.cjs.map +1 -1
- package/dist/NftController.d.cts +17 -9
- package/dist/NftController.d.cts.map +1 -1
- package/dist/NftController.d.mts +17 -9
- package/dist/NftController.d.mts.map +1 -1
- package/dist/NftController.mjs +74 -44
- package/dist/NftController.mjs.map +1 -1
- package/dist/multicall.cjs +1 -220
- package/dist/multicall.cjs.map +1 -1
- package/dist/multicall.d.cts +0 -22
- package/dist/multicall.d.cts.map +1 -1
- package/dist/multicall.d.mts +0 -22
- package/dist/multicall.d.mts.map +1 -1
- package/dist/multicall.mjs +0 -218
- package/dist/multicall.mjs.map +1 -1
- package/dist/token-prices-service/codefi-v2.d.cts +1 -1
- package/dist/token-prices-service/codefi-v2.d.mts +1 -1
- package/package.json +1 -1
|
@@ -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 { AssetsContractControllerGetERC1155TokenURIAction, AssetsContractControllerGetERC721AssetNameAction, AssetsContractControllerGetERC721AssetSymbolAction, AssetsContractControllerGetERC721TokenURIAction } from "./AssetsContractController-method-action-types.mjs";
|
|
10
|
+
import type { AssetsContractControllerGetERC1155BalanceOfAction, AssetsContractControllerGetERC1155TokenURIAction, AssetsContractControllerGetERC721AssetNameAction, AssetsContractControllerGetERC721AssetSymbolAction, AssetsContractControllerGetERC721OwnerOfAction, 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 | AssetsContractControllerGetERC1155TokenURIAction | NetworkControllerFindNetworkClientIdByChainIdAction | PhishingControllerBulkScanUrlsAction;
|
|
188
|
+
export type AllowedActions = ApprovalControllerAddRequestAction | AccountsControllerGetAccountAction | AccountsControllerGetSelectedAccountAction | NetworkControllerGetNetworkClientByIdAction | AssetsContractControllerGetERC721AssetNameAction | AssetsContractControllerGetERC721AssetSymbolAction | AssetsContractControllerGetERC721TokenURIAction | AssetsContractControllerGetERC721OwnerOfAction | AssetsContractControllerGetERC1155BalanceOfAction | 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,14 +252,9 @@ 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.
|
|
258
255
|
* @returns Promise resolving the NFT ownership.
|
|
259
256
|
*/
|
|
260
|
-
isNftOwner(ownerAddress: string, nftAddress: string, tokenId: string, networkClientId: NetworkClientId
|
|
261
|
-
standard?: string | null;
|
|
262
|
-
}): Promise<boolean>;
|
|
257
|
+
isNftOwner(ownerAddress: string, nftAddress: string, tokenId: string, networkClientId: NetworkClientId): Promise<boolean>;
|
|
263
258
|
/**
|
|
264
259
|
* Verifies currently selected address owns entered NFT address/tokenId combo and
|
|
265
260
|
* adds the NFT and respective NFT contract to the stored NFT and NFT contracts lists.
|
|
@@ -349,10 +344,23 @@ export declare class NftController extends BaseController<typeof controllerName,
|
|
|
349
344
|
* Removes all NFTs from the ignored list.
|
|
350
345
|
*/
|
|
351
346
|
clearIgnoredNfts(): void;
|
|
347
|
+
/**
|
|
348
|
+
* Checks whether input NFT is still owned by the user
|
|
349
|
+
* And updates the isCurrentlyOwned value on the NFT object accordingly.
|
|
350
|
+
*
|
|
351
|
+
* @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
|
+
* @param networkClientId - The networkClientId that can be used to identify the network client to use for this request.
|
|
354
|
+
* @param accountParams - The userAddress and chainId to check ownership against
|
|
355
|
+
* @param accountParams.userAddress - the address passed through the confirmed transaction flow to ensure assets are stored to the correct account
|
|
356
|
+
* @returns the NFT with the updated isCurrentlyOwned value
|
|
357
|
+
*/
|
|
358
|
+
checkAndUpdateSingleNftOwnershipStatus(nft: Nft, batch: boolean, networkClientId: NetworkClientId, { userAddress }?: {
|
|
359
|
+
userAddress?: string;
|
|
360
|
+
}): Promise<Nft>;
|
|
352
361
|
/**
|
|
353
362
|
* Checks whether NFTs associated with current selectedAddress/chainId combination are still owned by the user
|
|
354
363
|
* And updates the isCurrentlyOwned value on each accordingly.
|
|
355
|
-
* Uses Multicall3 to batch all ownership checks into a single RPC request when available.
|
|
356
364
|
*
|
|
357
365
|
* @param networkClientId - The networkClientId that can be used to identify the network client to use for this request.
|
|
358
366
|
* @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,7 +17,6 @@ function $importDefault(module) {
|
|
|
17
17
|
return module;
|
|
18
18
|
}
|
|
19
19
|
import { isAddress } from "@ethersproject/address";
|
|
20
|
-
import { Web3Provider } from "@ethersproject/providers";
|
|
21
20
|
import { BaseController } from "@metamask/base-controller";
|
|
22
21
|
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";
|
|
23
22
|
import { RecommendedAction } from "@metamask/phishing-controller";
|
|
@@ -29,7 +28,6 @@ const BN = $importDefault($BN);
|
|
|
29
28
|
import { v4 as random } from "uuid";
|
|
30
29
|
import { compareNftMetadata, getFormattedIpfsUrl, hasNewCollectionFields, reduceInBatchesSerially } from "./assetsUtil.mjs";
|
|
31
30
|
import { Source } from "./constants.mjs";
|
|
32
|
-
import { getNftOwnershipForMultipleNfts } from "./multicall.mjs";
|
|
33
31
|
const nftControllerMetadata = {
|
|
34
32
|
allNftContracts: {
|
|
35
33
|
includeInStateLogs: false,
|
|
@@ -167,27 +165,26 @@ export class NftController extends BaseController {
|
|
|
167
165
|
* @param nftAddress - NFT contract address.
|
|
168
166
|
* @param tokenId - NFT token ID.
|
|
169
167
|
* @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.
|
|
173
168
|
* @returns Promise resolving the NFT ownership.
|
|
174
169
|
*/
|
|
175
|
-
async isNftOwner(ownerAddress, nftAddress, tokenId, networkClientId
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
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.`);
|
|
170
|
+
async isNftOwner(ownerAddress, nftAddress, tokenId, networkClientId) {
|
|
171
|
+
// Checks the ownership for ERC-721.
|
|
172
|
+
try {
|
|
173
|
+
const owner = await this.messenger.call('AssetsContractController:getERC721OwnerOf', nftAddress, tokenId, networkClientId);
|
|
174
|
+
return ownerAddress.toLowerCase() === owner.toLowerCase();
|
|
175
|
+
}
|
|
176
|
+
catch {
|
|
177
|
+
// Ignore ERC-721 contract error
|
|
189
178
|
}
|
|
190
|
-
|
|
179
|
+
// Checks the ownership for ERC-1155.
|
|
180
|
+
try {
|
|
181
|
+
const balance = await this.messenger.call('AssetsContractController:getERC1155BalanceOf', ownerAddress, nftAddress, tokenId, networkClientId);
|
|
182
|
+
return !balance.isZero();
|
|
183
|
+
}
|
|
184
|
+
catch {
|
|
185
|
+
// Ignore ERC-1155 contract error
|
|
186
|
+
}
|
|
187
|
+
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.`);
|
|
191
188
|
}
|
|
192
189
|
/**
|
|
193
190
|
* Verifies currently selected address owns entered NFT address/tokenId combo and
|
|
@@ -462,10 +459,59 @@ export class NftController extends BaseController {
|
|
|
462
459
|
state.ignoredNfts = [];
|
|
463
460
|
});
|
|
464
461
|
}
|
|
462
|
+
/**
|
|
463
|
+
* Checks whether input NFT is still owned by the user
|
|
464
|
+
* And updates the isCurrentlyOwned value on the NFT object accordingly.
|
|
465
|
+
*
|
|
466
|
+
* @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
|
+
* @param networkClientId - The networkClientId that can be used to identify the network client to use for this request.
|
|
469
|
+
* @param accountParams - The userAddress and chainId to check ownership against
|
|
470
|
+
* @param accountParams.userAddress - the address passed through the confirmed transaction flow to ensure assets are stored to the correct account
|
|
471
|
+
* @returns the NFT with the updated isCurrentlyOwned value
|
|
472
|
+
*/
|
|
473
|
+
async checkAndUpdateSingleNftOwnershipStatus(nft, batch, networkClientId, { userAddress } = {}) {
|
|
474
|
+
const addressToSearch = __classPrivateFieldGet(this, _NftController_instances, "m", _NftController_getAddressOrSelectedAddress).call(this, userAddress);
|
|
475
|
+
const { configuration: { chainId }, } = this.messenger.call('NetworkController:getNetworkClientById', networkClientId);
|
|
476
|
+
const { address, tokenId } = nft;
|
|
477
|
+
let isOwned = nft.isCurrentlyOwned;
|
|
478
|
+
try {
|
|
479
|
+
isOwned = await this.isNftOwner(addressToSearch, address, tokenId, networkClientId);
|
|
480
|
+
}
|
|
481
|
+
catch {
|
|
482
|
+
// ignore error
|
|
483
|
+
// this will only throw an error 'Unable to verify ownership' in which case
|
|
484
|
+
// we want to keep the current value of isCurrentlyOwned for this flow.
|
|
485
|
+
}
|
|
486
|
+
const updatedNft = {
|
|
487
|
+
...nft,
|
|
488
|
+
isCurrentlyOwned: isOwned,
|
|
489
|
+
};
|
|
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
|
+
const { allNfts } = this.state;
|
|
495
|
+
const nfts = [...(allNfts[addressToSearch]?.[chainId] || [])];
|
|
496
|
+
const indexToUpdate = nfts.findIndex((item) => item.tokenId === tokenId &&
|
|
497
|
+
item.address.toLowerCase() === address.toLowerCase());
|
|
498
|
+
if (indexToUpdate !== -1) {
|
|
499
|
+
nfts[indexToUpdate] = updatedNft;
|
|
500
|
+
this.update((state) => {
|
|
501
|
+
state.allNfts[addressToSearch] = Object.assign({}, state.allNfts[addressToSearch], {
|
|
502
|
+
[chainId]: nfts,
|
|
503
|
+
});
|
|
504
|
+
});
|
|
505
|
+
__classPrivateFieldGet(this, _NftController_instances, "m", _NftController_updateNestedNftState).call(this, nfts, ALL_NFTS_STATE_KEY, {
|
|
506
|
+
userAddress: addressToSearch,
|
|
507
|
+
chainId,
|
|
508
|
+
});
|
|
509
|
+
}
|
|
510
|
+
return updatedNft;
|
|
511
|
+
}
|
|
465
512
|
/**
|
|
466
513
|
* Checks whether NFTs associated with current selectedAddress/chainId combination are still owned by the user
|
|
467
514
|
* And updates the isCurrentlyOwned value on each accordingly.
|
|
468
|
-
* Uses Multicall3 to batch all ownership checks into a single RPC request when available.
|
|
469
515
|
*
|
|
470
516
|
* @param networkClientId - The networkClientId that can be used to identify the network client to use for this request.
|
|
471
517
|
* @param options - an object of arguments
|
|
@@ -473,30 +519,14 @@ export class NftController extends BaseController {
|
|
|
473
519
|
*/
|
|
474
520
|
async checkAndUpdateAllNftsOwnershipStatus(networkClientId, { userAddress, } = {}) {
|
|
475
521
|
const addressToSearch = __classPrivateFieldGet(this, _NftController_instances, "m", _NftController_getAddressOrSelectedAddress).call(this, userAddress);
|
|
476
|
-
const
|
|
477
|
-
const { chainId } = client.configuration;
|
|
522
|
+
const { configuration: { chainId }, } = this.messenger.call('NetworkController:getNetworkClientById', networkClientId);
|
|
478
523
|
const { allNfts } = this.state;
|
|
479
524
|
const nfts = allNfts[addressToSearch]?.[chainId] || [];
|
|
480
|
-
|
|
481
|
-
return
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
try {
|
|
486
|
-
ownershipResults = await getNftOwnershipForMultipleNfts(nfts.map((nft) => ({
|
|
487
|
-
nftAddress: nft.address,
|
|
488
|
-
tokenId: nft.tokenId,
|
|
489
|
-
userAddress: addressToSearch,
|
|
490
|
-
standard: nft.standard,
|
|
491
|
-
})), chainId, provider);
|
|
492
|
-
}
|
|
493
|
-
catch {
|
|
494
|
-
return;
|
|
495
|
-
}
|
|
496
|
-
const updatedNfts = nfts.filter((_nft, index) => {
|
|
497
|
-
const { isOwned } = ownershipResults[index];
|
|
498
|
-
return isOwned !== false;
|
|
499
|
-
});
|
|
525
|
+
const updatedNfts = await Promise.all(nfts.map(async (nft) => {
|
|
526
|
+
return ((await this.checkAndUpdateSingleNftOwnershipStatus(nft, true, networkClientId, {
|
|
527
|
+
userAddress,
|
|
528
|
+
})) ?? nft);
|
|
529
|
+
}));
|
|
500
530
|
__classPrivateFieldGet(this, _NftController_instances, "m", _NftController_updateNestedNftState).call(this, updatedNfts, ALL_NFTS_STATE_KEY, {
|
|
501
531
|
userAddress: addressToSearch,
|
|
502
532
|
chainId,
|
|
@@ -1130,7 +1160,7 @@ async function _NftController_addNftContracts(userAddress, contracts) {
|
|
|
1130
1160
|
}
|
|
1131
1161
|
// Check if the user owns the suggested NFT
|
|
1132
1162
|
try {
|
|
1133
|
-
const isOwner = await this.isNftOwner(userAddress, contractAddress, tokenId, networkClientId
|
|
1163
|
+
const isOwner = await this.isNftOwner(userAddress, contractAddress, tokenId, networkClientId);
|
|
1134
1164
|
if (!isOwner) {
|
|
1135
1165
|
throw rpcErrors.invalidInput('Suggested NFT is not owned by the selected account');
|
|
1136
1166
|
}
|