Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
37 commits
Select commit Hold shift + click to select a range
c625112
Update Promise.all
kien-ngo Sep 25, 2023
d528102
Update
kien-ngo Sep 25, 2023
e0c2fbb
imprv getAllListingsNoFilter
kien-ngo Sep 25, 2023
37f0f0e
Add changeset
kien-ngo Sep 25, 2023
6d0588e
Fix issue in new code
kien-ngo Sep 25, 2023
fe7955e
Parallelize requests part 1
kien-ngo Sep 25, 2023
c956265
Part 2
kien-ngo Sep 26, 2023
ca9e855
Part 3
kien-ngo Sep 26, 2023
f92cabb
Part 4
kien-ngo Sep 26, 2023
f490010
Merge branch 'main' into fix_promise_all
kien-ngo Sep 26, 2023
66800a9
Revert changes to Solana
kien-ngo Sep 26, 2023
41b49c1
Update
kien-ngo Sep 26, 2023
e15f108
Update
kien-ngo Sep 26, 2023
4711755
Remove changeset
kien-ngo Sep 26, 2023
a4f61fc
Update
kien-ngo Sep 26, 2023
31e60ea
Update
kien-ngo Sep 26, 2023
4c2fe20
Merge branch 'main' into fix_promise_all
kien-ngo Sep 26, 2023
22a3db3
Update
kien-ngo Sep 26, 2023
ea7ddf1
Merge branch 'fix_promise_all' of https://github.com/kien-ngo/thirdwe…
kien-ngo Sep 26, 2023
f6c1a03
Update
kien-ngo Sep 27, 2023
eb8a074
Merge branch 'main' into fix_promise_all
kien-ngo Sep 27, 2023
9ce02df
Merge stuff
kien-ngo Sep 27, 2023
dcc670b
Merge branch 'main' into fix_promise_all
kien-ngo Sep 27, 2023
3344a71
Merge branch 'main' into fix_promise_all
kien-ngo Sep 28, 2023
5bb0932
Merge branch 'main' into fix_promise_all
kien-ngo Oct 7, 2023
44de297
Merge branch 'main' into fix_promise_all
kien-ngo Oct 7, 2023
47131fe
Merge branch 'main' into fix_promise_all
kien-ngo Oct 8, 2023
9e5dfbf
Resolve conflict
kien-ngo Oct 14, 2023
bb8a1fd
res conflt
kien-ngo Oct 18, 2023
dae1ef9
Res conflict
kien-ngo Oct 18, 2023
4e1a05e
Update
kien-ngo Oct 20, 2023
6e2256a
Res conflict
kien-ngo Oct 21, 2023
34940fa
Merge branch 'main' into fix_promise_all
kien-ngo Oct 23, 2023
7a171c4
Resolve conflict
kien-ngo Oct 24, 2023
63bb188
Merge branch 'fix_promise_all' of https://github.com/kien-ngo/thirdwe…
kien-ngo Oct 24, 2023
eef4b43
Res conflict
kien-ngo Nov 1, 2023
8fce178
test
kien-ngo Nov 1, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -141,7 +141,7 @@ export async function encodeConstructorParamsForImplementation(
return p.type;
}
});

const { chainId } = await provider.getNetwork();
const constructorParamValues = await Promise.all(
constructorParams.map(async (p) => {
if (constructorParamMap && constructorParamMap[p.name]) {
Expand Down Expand Up @@ -200,7 +200,6 @@ export async function encodeConstructorParamsForImplementation(

return deploymentInfo.transaction.predictedAddress;
} else if (p.name && p.name.includes("royaltyEngineAddress")) {
const chainId = (await provider.getNetwork()).chainId;
return getRoyaltyEngineV1ByChainId(chainId);
} else if (p.name && p.name.includes("marketplaceV3Params")) {
const chainId = (await provider.getNetwork()).chainId;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,9 +27,10 @@ export async function deployCreate2Factory(
if (commonFactoryExists) {
return COMMON_FACTORY;
}

const enforceEip155 = await isEIP155Enforced(signer.provider);
const networkId = (await signer.provider.getNetwork()).chainId;
const [enforceEip155, { chainId: networkId }] = await Promise.all([
isEIP155Enforced(signer.provider),
signer.provider.getNetwork(),
]);
const chainId = enforceEip155 ? networkId : 0;
console.debug(`ChainId ${networkId} enforces EIP155: ${enforceEip155}`);
const deploymentInfo = CUSTOM_GAS_FOR_CHAIN[networkId]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,9 +23,10 @@ export async function getCreate2FactoryAddress(
if (commonFactoryExists) {
return COMMON_FACTORY;
}

const enforceEip155 = await isEIP155Enforced(provider);
const networkId = (await provider.getNetwork()).chainId;
const [enforceEip155, { chainId: networkId }] = await Promise.all([
isEIP155Enforced(provider),
provider.getNetwork(),
]);
const chainId = enforceEip155 ? networkId : 0;
const deploymentInfo = CUSTOM_GAS_FOR_CHAIN[networkId]
? getCreate2FactoryDeploymentInfo(chainId, {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,15 +41,12 @@ export async function getEncodedConstructorParamsForThirdwebContract(
secretKey,
);
const publishUri = publishedContract.metadataUri;
const metadata = await fetchAndCacheDeployMetadata(publishUri, storage);
const create2Factory = await getCreate2FactoryAddress(provider);
const [metadata, create2Factory, { extendedMetadata }] = await Promise.all([
fetchAndCacheDeployMetadata(publishUri, storage),
getCreate2FactoryAddress(provider),
fetchAndCacheDeployMetadata(publishUri, storage),
]);
invariant(create2Factory, "Thirdweb stack not found");

const { extendedMetadata } = await fetchAndCacheDeployMetadata(
publishUri,
storage,
);

let encodedArgs;

// if pluginMetadata is not empty, then it's a plugin-pattern router contract
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,14 +38,11 @@ export async function predictThirdwebContractAddress(
secretKey,
);
const publishUri = publishedContract.metadataUri;
const create2Factory = await getCreate2FactoryAddress(provider);
const [create2Factory, { extendedMetadata }] = await Promise.all([
getCreate2FactoryAddress(provider),
fetchAndCacheDeployMetadata(publishUri, storage),
]);
invariant(create2Factory, "Thirdweb stack not found");

const { extendedMetadata } = await fetchAndCacheDeployMetadata(
publishUri,
storage,
);

if (
extendedMetadata?.routerType === "plugin" ||
extendedMetadata?.routerType === "dynamic"
Expand Down
6 changes: 4 additions & 2 deletions packages/sdk/src/evm/common/deploy.ts
Original file line number Diff line number Diff line change
Expand Up @@ -41,8 +41,10 @@ export async function getDeployArguments<
signer: Signer,
storage: ThirdwebStorage,
): Promise<any[]> {
const chainId = await signer.getChainId();
const signerAddress = await signer.getAddress();
const [chainId, signerAddress] = await Promise.all([
signer.getChainId(),
signer.getAddress(),
]);
const chainEnum = SUPPORTED_CHAIN_IDS.find((c) => c === chainId);
let trustedForwarders: string[] = [];
if (!chainEnum) {
Expand Down
36 changes: 19 additions & 17 deletions packages/sdk/src/evm/common/verification.ts
Original file line number Diff line number Diff line change
Expand Up @@ -64,23 +64,25 @@ export async function verifyThirdwebPrebuiltImplementation(
secretKey?: string,
constructorArgs?: ConstructorParamMap,
): Promise<string | string[]> {
const contractAddress = await getThirdwebContractAddress(
contractName,
chainId,
storage,
contractVersion,
clientId,
secretKey,
);
const encodedArgs = await getEncodedConstructorParamsForThirdwebContract(
contractName,
chainId,
storage,
contractVersion,
clientId,
secretKey,
constructorArgs,
);
const [contractAddress, encodedArgs] = await Promise.all([
getThirdwebContractAddress(
contractName,
chainId,
storage,
contractVersion,
clientId,
secretKey,
),
getEncodedConstructorParamsForThirdwebContract(
contractName,
chainId,
storage,
contractVersion,
clientId,
secretKey,
constructorArgs,
),
]);

console.info(`Verifying ${contractName} at address ${contractAddress}`);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -596,17 +596,12 @@ export class Marketplace implements UpdateableNetwork {
private async getAllListingsNoFilter(
filterInvalidListings: boolean,
): Promise<(AuctionListing | DirectListing)[]> {
const listings = await Promise.all(
Array.from(
Array(
(await this.contractWrapper.read("totalListings", [])).toNumber(),
).keys(),
).map(async (i) => {
let listing;

try {
listing = await this.getListing(i);
} catch (err) {
const _totalListings = (
await this.contractWrapper.read("totalListings", [])
).toNumber();
const _listings = await Promise.all(
Array.from(Array(_totalListings).keys()).map((i) =>
this.getListing(i).catch((err) => {
if (err instanceof ListingNotFoundError) {
return undefined;
} else {
Expand All @@ -615,20 +610,29 @@ export class Marketplace implements UpdateableNetwork {
);
return undefined;
}
}

if (listing.type === ListingType.Auction) {
return listing;
}

}),
),
);
const _listingValidity = await Promise.all(
_listings.map((_listing) => {
if (!_listing || _listing === undefined) return { valid: false };
if (_listing.type === ListingType.Auction) return { valid: false };
if (filterInvalidListings)
return this.direct.isStillValidListing(_listing);
return { valid: false };
}),
);
const listings = await Promise.all(
_listings.map((_listing, index) => {
if (!_listing || _listing === undefined) return undefined;
if (_listing.type === ListingType.Auction) return _listing;
if (filterInvalidListings) {
const { valid } = await this.direct.isStillValidListing(listing);
const { valid } = _listingValidity[index];
if (!valid) {
return undefined;
}
}

return listing;
return _listing;
}),
);
return listings.filter((l) => l !== undefined) as (
Expand Down
93 changes: 65 additions & 28 deletions packages/sdk/src/evm/core/classes/account-permissions.ts
Original file line number Diff line number Diff line change
Expand Up @@ -434,18 +434,21 @@ export class AccountPermissions implements DetectableFeature {
signerAddress: AddressOrEns,
permissions: SignerPermissionsInput,
): Promise<Transaction> => {
const resolvedSignerAddress = await resolveAddress(signerAddress);
const resolvedPermissions = await SignerPermissionsSchema.parseAsync(
permissions,
);

if (await this.isAdmin(resolvedSignerAddress)) {
const [resolvedSignerAddress, resolvedPermissions] = await Promise.all([
resolveAddress(signerAddress),
SignerPermissionsSchema.parseAsync(permissions),
]);
const [isAdmin, isSigner] = await Promise.all([
this.isAdmin(resolvedSignerAddress),
this.isSigner(resolvedSignerAddress),
]);
if (isAdmin) {
throw new Error(
"Signer is already an admin. Cannot grant permissions to an existing admin.",
);
}

if (await this.isSigner(resolvedSignerAddress)) {
if (isSigner) {
throw new Error(
"Signer already has permissions. Cannot grant permissions to an existing signer. You can update permissions using `updatePermissions`.",
);
Expand Down Expand Up @@ -480,18 +483,23 @@ export class AccountPermissions implements DetectableFeature {
signerAddress: AddressOrEns,
permissions: SignerPermissionsInput,
): Promise<Transaction> => {
const resolvedSignerAddress = await resolveAddress(signerAddress);
const resolvedPermissions = await SignerPermissionsSchema.parseAsync(
permissions,
);
const [resolvedSignerAddress, resolvedPermissions] = await Promise.all([
resolveAddress(signerAddress),
SignerPermissionsSchema.parseAsync(permissions),
]);

const [isAdmin, isSigner] = await Promise.all([
this.isAdmin(resolvedSignerAddress),
this.isSigner(resolvedSignerAddress),
]);

if (await this.isAdmin(resolvedSignerAddress)) {
if (isAdmin) {
throw new Error(
"Signer is already an admin. Cannot update permissions of an existing admin.",
);
}

if (!(await this.isSigner(resolvedSignerAddress))) {
if (!isSigner) {
throw new Error(
"Signer does not already have permissions. You can grant permissions using `grantPermissions`.",
);
Expand Down Expand Up @@ -523,14 +531,17 @@ export class AccountPermissions implements DetectableFeature {
revokeAccess = /* @__PURE__ */ buildTransactionFunction(
async (signerAddress: AddressOrEns): Promise<Transaction> => {
const resolvedSignerAddress = await resolveAddress(signerAddress);

if (await this.isAdmin(resolvedSignerAddress)) {
const [isAdmin, isSigner] = await Promise.all([
this.isAdmin(resolvedSignerAddress),
this.isSigner(resolvedSignerAddress),
]);
if (isAdmin) {
throw new Error(
"Signer is already an admin. Cannot revoke permissions of an admin.",
);
}

if (!(await this.isSigner(resolvedSignerAddress))) {
if (!isSigner) {
throw new Error(
"Signer does not already have permissions. You can grant permissions using `grantPermissions`.",
);
Expand Down Expand Up @@ -570,16 +581,21 @@ export class AccountPermissions implements DetectableFeature {
signerAddress: AddressOrEns,
target: AddressOrEns,
): Promise<Transaction> => {
const resolvedSignerAddress = await resolveAddress(signerAddress);
const resolvedTarget = await resolveAddress(target);

if (await this.isAdmin(resolvedSignerAddress)) {
const [resolvedSignerAddress, resolvedTarget] = await Promise.all([
resolveAddress(signerAddress),
resolveAddress(target),
]);
const [isAdmin, isSigner] = await Promise.all([
this.isAdmin(resolvedSignerAddress),
this.isSigner(resolvedSignerAddress),
]);
if (isAdmin) {
throw new Error(
"Signer is already an admin. Cannot approve targets for an admin.",
);
}

if (!(await this.isSigner(resolvedSignerAddress))) {
if (!isSigner) {
throw new Error(
"Signer does not already have permissions. You can grant permissions using `grantPermissions`.",
);
Expand Down Expand Up @@ -631,16 +647,21 @@ export class AccountPermissions implements DetectableFeature {
signerAddress: AddressOrEns,
target: AddressOrEns,
): Promise<Transaction> => {
const resolvedSignerAddress = await resolveAddress(signerAddress);
const resolvedTarget = await resolveAddress(target);

if (await this.isAdmin(resolvedSignerAddress)) {
const [resolvedSignerAddress, resolvedTarget] = await Promise.all([
resolveAddress(signerAddress),
resolveAddress(target),
]);
const [isAdmin, isSigner] = await Promise.all([
this.isAdmin(resolvedSignerAddress),
this.isSigner(resolvedSignerAddress),
]);
if (isAdmin) {
throw new Error(
"Signer is already an admin. Cannot approve targets for an admin.",
);
}

if (!(await this.isSigner(resolvedSignerAddress))) {
if (!isSigner) {
throw new Error(
"Signer does not already have permissions. You can grant permissions using `grantPermissions`.",
);
Expand Down Expand Up @@ -719,8 +740,12 @@ export class AccountPermissions implements DetectableFeature {
const addOrUpdateSignerData: string[] = [];
const removeSignerData: string[] = [];

const [allAdmins, allSigners] = await Promise.all([
this.getAllAdmins(),
this.getAllSigners(),
]);

// Remove all existing admins not included in the passed snapshot.
const allAdmins = await this.getAllAdmins();
const allToMakeAdmin = resolvedSnapshot
.filter((item) => item.makeAdmin)
.map((item) => item.signer);
Expand All @@ -738,7 +763,6 @@ export class AccountPermissions implements DetectableFeature {
});

// Remove all existing signers not included in the passed snapshot.
const allSigners = await this.getAllSigners();
const allToMakeSigners = resolvedSnapshot
.filter((item) => {
return !item.makeAdmin;
Expand Down Expand Up @@ -783,6 +807,19 @@ export class AccountPermissions implements DetectableFeature {
}
}

(
await Promise.all(
resolvedSnapshot
.filter((member) => !member.makeAdmin)
.map((member) =>
this.buildSignerPermissionRequest(
member.signer,
member.permissions,
),
),
)
).map((data) => addOrUpdateSignerData.push(data));

const data: string[] = [];
removeAdminData.forEach((item) => {
data.push(item);
Expand Down
Loading