From c8783031c65896b8c991e283a1d2fb09c643ecf0 Mon Sep 17 00:00:00 2001 From: Joaquim Verges Date: Thu, 8 May 2025 10:40:50 +1200 Subject: [PATCH] [SDK] Fix hex value handling for smart wallet execution --- .changeset/short-feet-check.md | 5 +++++ packages/thirdweb/src/react/web/ui/prebuilt/NFT/utils.ts | 1 + packages/thirdweb/src/wallets/smart/lib/calls.ts | 4 ++-- 3 files changed, 8 insertions(+), 2 deletions(-) create mode 100644 .changeset/short-feet-check.md diff --git a/.changeset/short-feet-check.md b/.changeset/short-feet-check.md new file mode 100644 index 00000000000..b856eb69876 --- /dev/null +++ b/.changeset/short-feet-check.md @@ -0,0 +1,5 @@ +--- +"thirdweb": patch +--- + +Handle hex value format for smart wallet execution diff --git a/packages/thirdweb/src/react/web/ui/prebuilt/NFT/utils.ts b/packages/thirdweb/src/react/web/ui/prebuilt/NFT/utils.ts index 812cee1c3e0..5e8e6a70f51 100644 --- a/packages/thirdweb/src/react/web/ui/prebuilt/NFT/utils.ts +++ b/packages/thirdweb/src/react/web/ui/prebuilt/NFT/utils.ts @@ -17,6 +17,7 @@ export async function getNFTInfo(options: NFTProviderProps): Promise { }), getNFT1155({ ...options, + useIndexer: false, // TODO (insight): switch this call to only call insight once }), ]).then(([possibleNFT721, possibleNFT1155]) => { // getNFT extension always return an NFT object diff --git a/packages/thirdweb/src/wallets/smart/lib/calls.ts b/packages/thirdweb/src/wallets/smart/lib/calls.ts index 7ef1ccb053b..681994c9184 100644 --- a/packages/thirdweb/src/wallets/smart/lib/calls.ts +++ b/packages/thirdweb/src/wallets/smart/lib/calls.ts @@ -184,7 +184,7 @@ export function prepareExecute(args: { let value = transaction.value || 0n; // special handling of hedera chains, decimals for native value is 8 instead of 18 when passed as contract params if (transaction.chainId === 295 || transaction.chainId === 296) { - value = value / BigInt(10 ** 10); + value = BigInt(value) / BigInt(10 ** 10); } return prepareContractCall({ contract: accountContract, @@ -220,7 +220,7 @@ export function prepareBatchExecute(args: { const chainId = transactions[0]?.chainId; // special handling of hedera chains, decimals for native value is 8 instead of 18 when passed as contract params if (chainId === 295 || chainId === 296) { - values = values.map((value) => value / BigInt(10 ** 10)); + values = values.map((value) => BigInt(value) / BigInt(10 ** 10)); } return prepareContractCall({ contract: accountContract,