Skip to content

Commit 4720458

Browse files
fix nft address casing
1 parent 0721e7d commit 4720458

File tree

4 files changed

+25
-24
lines changed

4 files changed

+25
-24
lines changed

packages/thirdweb/src/extensions/erc721/read/getNFT.test.ts

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ describe.runIf(process.env.TW_SECRET_KEY)("erc721.getNFT", () => {
5858
includeOwner: true,
5959
});
6060
expect(nft.metadata.name).toBe("Doodle #1");
61-
expect(nft.owner).toBe("0xbe9936fcfc50666f5425fde4a9decc59cef73b24");
61+
expect(nft.owner).toBe("0xbE9936FCFC50666f5425FDE4A9decC59cEF73b24");
6262
expect(nft).toMatchInlineSnapshot(`
6363
{
6464
"chainId": 1,
@@ -90,12 +90,9 @@ describe.runIf(process.env.TW_SECRET_KEY)("erc721.getNFT", () => {
9090
"image": "ipfs://QmTDxnzcvj2p3xBrKcGv1wxoyhAn2yzCQnZZ9LmFjReuH9",
9191
"image_url": "ipfs://QmTDxnzcvj2p3xBrKcGv1wxoyhAn2yzCQnZZ9LmFjReuH9",
9292
"name": "Doodle #1",
93-
"owner_addresses": [
94-
"0xbe9936fcfc50666f5425fde4a9decc59cef73b24",
95-
],
9693
"uri": "ipfs://QmPMc4tcBsMqLRuCQtPmPe84bpSjrC3Ky7t3JWuHXYB4aS/1",
9794
},
98-
"owner": "0xbe9936fcfc50666f5425fde4a9decc59cef73b24",
95+
"owner": "0xbE9936FCFC50666f5425FDE4A9decC59cEF73b24",
9996
"tokenAddress": "0x8a90cab2b38dba80c64b7734e58ee1db38b8992e",
10097
"tokenURI": "ipfs://QmPMc4tcBsMqLRuCQtPmPe84bpSjrC3Ky7t3JWuHXYB4aS/1",
10198
"type": "ERC721",

packages/thirdweb/src/extensions/erc721/read/getOwnedNFTs.test.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,9 @@ describe.runIf(process.env.TW_SECRET_KEY)("erc721.getOwnedNFTs", () => {
1313
owner,
1414
});
1515
expect(nfts.length).greaterThan(0);
16+
for (const item of nfts) {
17+
expect(item.owner).toBe(owner);
18+
}
1619
});
1720

1821
it("should detect ownership functions using indexer", async () => {

packages/thirdweb/src/insight/get-nfts.ts

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import type { NFT } from "../utils/nft/parseNft.js";
1111

1212
import { getCachedChain } from "../chains/utils.js";
1313
import { getContract } from "../contract/contract.js";
14+
import { getAddress } from "../utils/address.js";
1415
type OwnedNFT = GetV1NftsResponse["data"][number];
1516
type ContractNFT = GetV1NftsByContractAddressResponse["data"][number];
1617

@@ -268,21 +269,25 @@ async function transformNFTModel(
268269
token_type,
269270
...rest
270271
} = nft;
272+
273+
let metadataToUse = rest;
274+
let owners: string[] | undefined = ownerAddress
275+
? [getAddress(ownerAddress)]
276+
: undefined;
277+
278+
if ("owner_addresses" in rest) {
279+
const { owner_addresses, ...restWithoutOwnerAddresses } = rest;
280+
metadataToUse = restWithoutOwnerAddresses;
281+
owners = owners ?? owner_addresses?.map((o) => getAddress(o));
282+
}
283+
271284
const metadata = replaceIPFSGatewayRecursively({
272285
uri: nft.metadata_url ?? "",
273286
image: nft.image_url,
274287
attributes: nft.extra_metadata?.attributes ?? undefined,
275-
...rest,
288+
...metadataToUse,
276289
});
277290

278-
// replace the ipfs gateway with the ipfs gateway from the client recusively for each key in the metadata object
279-
280-
const owner_addresses = ownerAddress
281-
? [ownerAddress]
282-
: "owner_addresses" in nft
283-
? nft.owner_addresses
284-
: undefined;
285-
286291
if (contract?.type === "erc1155") {
287292
// TODO (insight): this needs to be added in the API
288293
const supply = await totalSupply({
@@ -298,7 +303,7 @@ async function transformNFTModel(
298303
tokenId: BigInt(token_id),
299304
tokenUri: replaceIPFSGateway(metadata_url) ?? "",
300305
type: "ERC1155",
301-
owner: owner_addresses?.[0],
306+
owner: owners?.[0],
302307
tokenAddress: contract?.address ?? "",
303308
chainId: contract?.chain_id ?? 0,
304309
supply: supply,
@@ -307,7 +312,7 @@ async function transformNFTModel(
307312
parsedNft = parseNFT(metadata, {
308313
tokenId: BigInt(token_id),
309314
type: "ERC721",
310-
owner: owner_addresses?.[0],
315+
owner: owners?.[0],
311316
tokenUri: replaceIPFSGateway(metadata_url) ?? "",
312317
tokenAddress: contract?.address ?? "",
313318
chainId: contract?.chain_id ?? 0,

packages/thirdweb/src/wallets/smart/lib/paymaster.ts

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -65,19 +65,15 @@ export async function getPaymasterAndData(args: {
6565
headers,
6666
body: stringify(body),
6767
});
68-
const res = await response.json();
6968

7069
if (!response.ok) {
71-
const error = res.error || response.statusText;
72-
const code = res.code || "UNKNOWN";
70+
const error = (await response.text()) || response.statusText;
7371

74-
throw new Error(
75-
`Paymaster error: ${error}
76-
Status: ${response.status}
77-
Code: ${code}`,
78-
);
72+
throw new Error(`Paymaster error: ${response.status} - ${error}`);
7973
}
8074

75+
const res = await response.json();
76+
8177
if (res.result) {
8278
// some paymasters return a string, some return an object with more data
8379
if (typeof res.result === "string") {

0 commit comments

Comments
 (0)