From 9875c9e62f9beb14d05ca078ac5c0f5a2c460380 Mon Sep 17 00:00:00 2001 From: Kien Ngo Date: Wed, 27 Sep 2023 18:17:01 -0400 Subject: [PATCH 1/4] Code --- packages/sdk/src/evm/core/classes/erc-721.ts | 34 ++++++++++++-------- 1 file changed, 21 insertions(+), 13 deletions(-) diff --git a/packages/sdk/src/evm/core/classes/erc-721.ts b/packages/sdk/src/evm/core/classes/erc-721.ts index e77b88f60d4..92030185e4b 100644 --- a/packages/sdk/src/evm/core/classes/erc-721.ts +++ b/packages/sdk/src/evm/core/classes/erc-721.ts @@ -279,10 +279,14 @@ export class Erc721< */ transferFrom = /* @__PURE__ */ buildTransactionFunction( async (from: AddressOrEns, to: AddressOrEns, tokenId: BigNumberish) => { + const [fromAddress, toAddress] = await Promise.all([ + resolveAddress(from), + resolveAddress(to), + ]); return Transaction.fromContractWrapper({ contractWrapper: this.contractWrapper, method: "transferFrom(address,address,uint256)", - args: [await resolveAddress(from), await resolveAddress(to), tokenId], + args: [fromAddress, toAddress, tokenId], }); }, ); @@ -328,7 +332,7 @@ export class Erc721< return Transaction.fromContractWrapper({ contractWrapper: this.contractWrapper, method: "approve", - args: [await resolveAddress(operator), tokenId], + args: [resolveAddress(operator), tokenId], }); }, ); @@ -422,13 +426,14 @@ export class Erc721< if (this.query?.owned) { return this.query.owned.all(walletAddress); } else { - const address = - walletAddress || (await this.contractWrapper.getSignerAddress()); - const allOwners = await this.getAllOwners(); - return Promise.all( + const [address, allOwners] = await Promise.all([ + walletAddress || this.contractWrapper.getSignerAddress(), + this.getAllOwners(), + ]); + return await Promise.all( (allOwners || []) .filter((i) => address?.toLowerCase() === i.owner?.toLowerCase()) - .map(async (i) => await this.get(i.tokenId)), + .map(async (i) => this.get(i.tokenId)), ); } } @@ -445,9 +450,10 @@ export class Erc721< if (this.query?.owned) { return this.query.owned.tokenIds(walletAddress); } else { - const address = - walletAddress || (await this.contractWrapper.getSignerAddress()); - const allOwners = await this.getAllOwners(); + const [address, allOwners] = await Promise.all([ + walletAddress || this.contractWrapper.getSignerAddress(), + this.getAllOwners(), + ]); return (allOwners || []) .filter((i) => address?.toLowerCase() === i.owner?.toLowerCase()) .map((i) => BigNumber.from(i.tokenId)); @@ -902,9 +908,11 @@ export class Erc721< * @twfeature ERC721ClaimCustom | ERC721ClaimPhasesV2 | ERC721ClaimPhasesV1 | ERC721ClaimConditionsV2 | ERC721ClaimConditionsV1 */ public async totalUnclaimedSupply(): Promise { - return (await this.nextTokenIdToMint()).sub( - await this.totalClaimedSupply(), - ); + const [nextTokenIdToMint, totalClaimedSupply] = await Promise.all([ + this.nextTokenIdToMint(), + this.totalClaimedSupply(), + ]); + return nextTokenIdToMint.sub(totalClaimedSupply); } /** From dba74913027ea268a89e7ed2c35749a3aebdcd6c Mon Sep 17 00:00:00 2001 From: Kien Ngo Date: Wed, 27 Sep 2023 23:58:21 -0400 Subject: [PATCH 2/4] Add changeset --- .changeset/large-beans-march.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/large-beans-march.md diff --git a/.changeset/large-beans-march.md b/.changeset/large-beans-march.md new file mode 100644 index 00000000000..b29f348b9a4 --- /dev/null +++ b/.changeset/large-beans-march.md @@ -0,0 +1,5 @@ +--- +"@thirdweb-dev/sdk": patch +--- + +Performance improvement to various function for ERC721 From ab934f18eeebd01e0a4c00c28f900a5cd5570113 Mon Sep 17 00:00:00 2001 From: Kien Ngo Date: Thu, 28 Sep 2023 00:01:02 -0400 Subject: [PATCH 3/4] Fix --- packages/sdk/src/evm/core/classes/erc-721.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/sdk/src/evm/core/classes/erc-721.ts b/packages/sdk/src/evm/core/classes/erc-721.ts index 92030185e4b..e6097329107 100644 --- a/packages/sdk/src/evm/core/classes/erc-721.ts +++ b/packages/sdk/src/evm/core/classes/erc-721.ts @@ -332,7 +332,7 @@ export class Erc721< return Transaction.fromContractWrapper({ contractWrapper: this.contractWrapper, method: "approve", - args: [resolveAddress(operator), tokenId], + args: [await resolveAddress(operator), tokenId], }); }, ); From 7d898583fd94061fc32d026f47092f5b844f5ad2 Mon Sep 17 00:00:00 2001 From: Kien Ngo Date: Thu, 28 Sep 2023 00:08:55 -0400 Subject: [PATCH 4/4] Update --- packages/sdk/src/evm/core/classes/erc-721.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/sdk/src/evm/core/classes/erc-721.ts b/packages/sdk/src/evm/core/classes/erc-721.ts index e6097329107..d5a9470429f 100644 --- a/packages/sdk/src/evm/core/classes/erc-721.ts +++ b/packages/sdk/src/evm/core/classes/erc-721.ts @@ -433,7 +433,7 @@ export class Erc721< return await Promise.all( (allOwners || []) .filter((i) => address?.toLowerCase() === i.owner?.toLowerCase()) - .map(async (i) => this.get(i.tokenId)), + .map((i) => this.get(i.tokenId)), ); } }