Skip to content

Commit 21ca67d

Browse files
[TSv4] Avoid unnecessary fetching for error formatting (thirdweb-dev#3239)
Co-authored-by: Joaquim Verges <[email protected]>
1 parent 8acf564 commit 21ca67d

File tree

4 files changed

+27
-19
lines changed

4 files changed

+27
-19
lines changed

.changeset/strange-dryers-yawn.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
---
2+
"@thirdweb-dev/unity-js-bridge": patch
3+
"@thirdweb-dev/sdk": patch
4+
---
5+
6+
[TSv4] Avoid unnecessary fetching for error formatting

legacy_packages/sdk/src/evm/core/classes/internal/contract-wrapper.ts

Lines changed: 9 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -18,21 +18,20 @@ import { computeEOAForwarderAddress } from "../../../common/any-evm-utils/comput
1818
import { computeForwarderAddress } from "../../../common/any-evm-utils/computeForwarderAddress";
1919
import { TransactionError, parseRevertReason } from "../../../common/error";
2020
import { extractFunctionsFromAbi } from "../../../common/feature-detection/extractFunctionsFromAbi";
21-
import { fetchSourceFilesFromMetadata } from "../../../common/fetchSourceFilesFromMetadata";
2221
import {
2322
BiconomyForwarderAbi,
2423
ChainAwareForwardRequest,
2524
ForwardRequest,
2625
getAndIncrementNonce,
2726
} from "../../../common/forwarder";
2827
import { getDefaultGasOverrides } from "../../../common/gas-price";
29-
import { fetchContractMetadataFromAddress } from "../../../common/metadata-resolver";
28+
import { fetchContractMetadataFromAddress, getContractMetadataFromCache } from "../../../common/metadata-resolver";
3029
import { signEIP2612Permit } from "../../../common/permit";
3130
import { signTypedDataInternal } from "../../../common/sign";
3231
import { CONTRACT_ADDRESSES } from "../../../constants/addresses/CONTRACT_ADDRESSES";
3332
import { getContractAddressByChainId } from "../../../constants/addresses/getContractAddressByChainId";
3433
import { EventType } from "../../../constants/events";
35-
import { AbiSchema, ContractSource } from "../../../schema/contracts/custom";
34+
import { AbiSchema } from "../../../schema/contracts/custom";
3635
import { SDKOptions } from "../../../schema/sdk-options";
3736
import { Address } from "../../../schema/shared/Address";
3837
import { CallOverrideSchema } from "../../../schema/shared/CallOverrideSchema";
@@ -433,8 +432,8 @@ export class ContractWrapper<
433432
...args,
434433
...(callOverrides.value ? [{ value: callOverrides.value }] : []),
435434
);
436-
} catch (err: any) {
437-
throw await this.formatError(err, fn, args, callOverrides);
435+
} catch (staticErr: any) {
436+
throw await this.formatError(staticErr, fn, args, callOverrides);
438437
}
439438
}
440439
}
@@ -495,24 +494,18 @@ export class ContractWrapper<
495494
// Parse the revert reason from the error
496495
const reason = parseRevertReason(error);
497496

498-
// Get contract sources for stack trace
499-
let sources: ContractSource[] | undefined = undefined;
497+
// Get contract metadata for contract name if cached
500498
let contractName: string | undefined = undefined;
501499
try {
502-
const metadata = await fetchContractMetadataFromAddress(
500+
const chainId = (await provider.getNetwork()).chainId;
501+
const metadata = getContractMetadataFromCache(
503502
this.address,
504-
this.getProvider(),
505-
this.storage,
506-
this.options,
503+
chainId,
507504
);
508505

509-
if (metadata.name) {
506+
if (metadata?.name) {
510507
contractName = metadata.name;
511508
}
512-
513-
if (metadata.metadata.sources) {
514-
sources = await fetchSourceFilesFromMetadata(metadata, this.storage);
515-
}
516509
} catch (err) {
517510
// no-op
518511
}
@@ -529,7 +522,6 @@ export class ContractWrapper<
529522
value,
530523
hash,
531524
contractName,
532-
sources,
533525
},
534526
error,
535527
);

legacy_packages/sdk/src/evm/core/classes/transactions.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -663,7 +663,7 @@ export class Transaction<
663663
// Parse the revert reason from the error
664664
const reason = parseRevertReason(error);
665665

666-
// Get contract sources for stack trace
666+
// Get contract metadata for contract name if cached
667667
let contractName: string | undefined = undefined;
668668
try {
669669
const chainId = (await provider.getNetwork()).chainId;

legacy_packages/unity-js-bridge/src/thirdweb-bridge.ts

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ import { EthersWallet } from "@thirdweb-dev/wallets/evm/wallets/ethers";
2727
import { InjectedWallet } from "@thirdweb-dev/wallets/evm/wallets/injected";
2828
import { LocalWallet } from "@thirdweb-dev/wallets/evm/wallets/local-wallet";
2929
import { MetaMaskWallet } from "@thirdweb-dev/wallets/evm/wallets/metamask";
30+
import { RabbyWallet } from "@thirdweb-dev/wallets/evm/wallets/rabby";
3031
import { SmartWallet } from "@thirdweb-dev/wallets/evm/wallets/smart-wallet";
3132
import { WalletConnect } from "@thirdweb-dev/wallets/evm/wallets/wallet-connect";
3233
import {
@@ -68,6 +69,7 @@ const bigNumberReplacer = (_key: string, value: any) => {
6869
const SUPPORTED_WALLET_IDS = [
6970
"injected",
7071
"metamask",
72+
"rabby",
7173
"walletConnect",
7274
"coinbase",
7375
"localWallet",
@@ -171,7 +173,7 @@ class ThirdwebBridge implements TWBridge {
171173
// biome-ignore lint/suspicious/noExplicitAny: TODO: fix use of any
172174
(globalThis as any).X_SDK_PLATFORM = "unity";
173175
// biome-ignore lint/suspicious/noExplicitAny: TODO: fix use of any
174-
(globalThis as any).X_SDK_VERSION = "4.15.1";
176+
(globalThis as any).X_SDK_VERSION = "4.15.2";
175177
// biome-ignore lint/suspicious/noExplicitAny: TODO: fix use of any
176178
(globalThis as any).X_SDK_OS = browser?.os ?? "unknown";
177179
}
@@ -237,6 +239,14 @@ class ThirdwebBridge implements TWBridge {
237239
clientId: sdkOptions.clientId,
238240
});
239241
break;
242+
case "rabby":
243+
walletInstance = new RabbyWallet({
244+
projectId: sdkOptions.wallet?.walletConnectProjectId,
245+
dappMetadata,
246+
chains: supportedChains,
247+
clientId: sdkOptions.clientId,
248+
});
249+
break;
240250
case "walletConnect":
241251
walletInstance = new WalletConnect({
242252
projectId: sdkOptions.wallet?.walletConnectProjectId,

0 commit comments

Comments
 (0)