thirdweb 5.49.0 → 5.50.0-nightly-ff3abfa79e4f5f8806676d97c11ff24ffd62266f-20240901000406
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/adapters/ethers5.js +3 -0
- package/dist/cjs/adapters/ethers5.js.map +1 -1
- package/dist/cjs/exports/extensions/ens.js +6 -1
- package/dist/cjs/exports/extensions/ens.js.map +1 -1
- package/dist/cjs/extensions/ens/__generated__/L2Resolver/read/name.js +115 -0
- package/dist/cjs/extensions/ens/__generated__/L2Resolver/read/name.js.map +1 -0
- package/dist/cjs/extensions/ens/constants.js +3 -1
- package/dist/cjs/extensions/ens/constants.js.map +1 -1
- package/dist/cjs/extensions/ens/resolve-address.js +13 -1
- package/dist/cjs/extensions/ens/resolve-address.js.map +1 -1
- package/dist/cjs/extensions/ens/resolve-l2-name.js +80 -0
- package/dist/cjs/extensions/ens/resolve-l2-name.js.map +1 -0
- package/dist/cjs/extensions/ens/resolve-name.js +1 -1
- package/dist/cjs/extensions/ens/resolve-name.js.map +1 -1
- package/dist/cjs/extensions/erc1155/drops/write/updateMetadata.js +2 -1
- package/dist/cjs/extensions/erc1155/drops/write/updateMetadata.js.map +1 -1
- package/dist/cjs/extensions/erc721/drops/write/updateMetadata.js +1 -0
- package/dist/cjs/extensions/erc721/drops/write/updateMetadata.js.map +1 -1
- package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/BuyScreen.js +1 -1
- package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/BuyScreen.js.map +1 -1
- package/dist/cjs/react/web/ui/ConnectWallet/screens/WalletSwitcherConnectionScreen.js +1 -1
- package/dist/cjs/react/web/ui/ConnectWallet/screens/WalletSwitcherConnectionScreen.js.map +1 -1
- package/dist/cjs/react/web/ui/prebuilt/thirdweb/CreateDirectListingButton/index.js +64 -19
- package/dist/cjs/react/web/ui/prebuilt/thirdweb/CreateDirectListingButton/index.js.map +1 -1
- package/dist/cjs/version.js +1 -1
- package/dist/cjs/version.js.map +1 -1
- package/dist/esm/adapters/ethers5.js +3 -3
- package/dist/esm/adapters/ethers5.js.map +1 -1
- package/dist/esm/exports/extensions/ens.js +2 -0
- package/dist/esm/exports/extensions/ens.js.map +1 -1
- package/dist/esm/extensions/ens/__generated__/L2Resolver/read/name.js +107 -0
- package/dist/esm/extensions/ens/__generated__/L2Resolver/read/name.js.map +1 -0
- package/dist/esm/extensions/ens/constants.js +2 -0
- package/dist/esm/extensions/ens/constants.js.map +1 -1
- package/dist/esm/extensions/ens/resolve-address.js +13 -1
- package/dist/esm/extensions/ens/resolve-address.js.map +1 -1
- package/dist/esm/extensions/ens/resolve-l2-name.js +75 -0
- package/dist/esm/extensions/ens/resolve-l2-name.js.map +1 -0
- package/dist/esm/extensions/ens/resolve-name.js +1 -1
- package/dist/esm/extensions/ens/resolve-name.js.map +1 -1
- package/dist/esm/extensions/erc1155/drops/write/updateMetadata.js +2 -1
- package/dist/esm/extensions/erc1155/drops/write/updateMetadata.js.map +1 -1
- package/dist/esm/extensions/erc721/drops/write/updateMetadata.js +1 -0
- package/dist/esm/extensions/erc721/drops/write/updateMetadata.js.map +1 -1
- package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/BuyScreen.js +1 -1
- package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/BuyScreen.js.map +1 -1
- package/dist/esm/react/web/ui/ConnectWallet/screens/WalletSwitcherConnectionScreen.js +1 -1
- package/dist/esm/react/web/ui/ConnectWallet/screens/WalletSwitcherConnectionScreen.js.map +1 -1
- package/dist/esm/react/web/ui/prebuilt/thirdweb/CreateDirectListingButton/index.js +62 -17
- package/dist/esm/react/web/ui/prebuilt/thirdweb/CreateDirectListingButton/index.js.map +1 -1
- package/dist/esm/version.js +1 -1
- package/dist/esm/version.js.map +1 -1
- package/dist/types/adapters/ethers5.d.ts +24 -0
- package/dist/types/adapters/ethers5.d.ts.map +1 -1
- package/dist/types/exports/extensions/ens.d.ts +2 -0
- package/dist/types/exports/extensions/ens.d.ts.map +1 -1
- package/dist/types/extensions/ens/__generated__/L2Resolver/read/name.d.ts +84 -0
- package/dist/types/extensions/ens/__generated__/L2Resolver/read/name.d.ts.map +1 -0
- package/dist/types/extensions/ens/constants.d.ts +2 -0
- package/dist/types/extensions/ens/constants.d.ts.map +1 -1
- package/dist/types/extensions/ens/resolve-address.d.ts +12 -0
- package/dist/types/extensions/ens/resolve-address.d.ts.map +1 -1
- package/dist/types/extensions/ens/resolve-l2-name.d.ts +48 -0
- package/dist/types/extensions/ens/resolve-l2-name.d.ts.map +1 -0
- package/dist/types/extensions/erc1155/drops/write/updateMetadata.d.ts +2 -1
- package/dist/types/extensions/erc1155/drops/write/updateMetadata.d.ts.map +1 -1
- package/dist/types/extensions/erc721/drops/write/updateMetadata.d.ts +1 -0
- package/dist/types/extensions/erc721/drops/write/updateMetadata.d.ts.map +1 -1
- package/dist/types/react/web/ui/prebuilt/thirdweb/CreateDirectListingButton/index.d.ts.map +1 -1
- package/dist/types/version.d.ts +1 -1
- package/dist/types/version.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/adapters/ethers5.test.ts +42 -3
- package/src/adapters/ethers5.ts +3 -3
- package/src/exports/extensions/ens.ts +10 -0
- package/src/extensions/ens/__generated__/L2Resolver/read/name.ts +122 -0
- package/src/extensions/ens/constants.ts +4 -0
- package/src/extensions/ens/resolve-address.test.ts +13 -0
- package/src/extensions/ens/resolve-address.ts +13 -1
- package/src/extensions/ens/resolve-l2-name.test.ts +30 -0
- package/src/extensions/ens/resolve-l2-name.ts +107 -0
- package/src/extensions/ens/resolve-name.ts +1 -1
- package/src/extensions/erc1155/drops/write/claimTo.test.ts +128 -16
- package/src/extensions/erc1155/drops/write/updateMetadata.test.ts +55 -0
- package/src/extensions/erc1155/drops/write/updateMetadata.ts +2 -1
- package/src/extensions/erc721/drops/write/updateMetadata.test.ts +56 -0
- package/src/extensions/erc721/drops/write/updateMetadata.ts +1 -0
- package/src/react/web/ui/ConnectWallet/screens/Buy/BuyScreen.tsx +1 -1
- package/src/react/web/ui/ConnectWallet/screens/WalletSwitcherConnectionScreen.tsx +1 -1
- package/src/react/web/ui/prebuilt/thirdweb/CreateDirectListingButton/index.tsx +75 -18
- package/src/version.ts +1 -1
@@ -109,12 +109,13 @@ export async function getUpdateMetadataParams(
|
|
109
109
|
* const transaction = updateMetadata({
|
110
110
|
* contract,
|
111
111
|
* targetTokenId: 0n,
|
112
|
+
* client: thirdwebClient,
|
112
113
|
* newMetadata: {
|
113
114
|
* name: "this is the new nft name",
|
114
115
|
* description: "...",
|
115
116
|
* image: "new image uri"
|
116
117
|
* // ...
|
117
|
-
* }
|
118
|
+
* },
|
118
119
|
* });
|
119
120
|
*
|
120
121
|
* await sendTransaction({ transaction, account });
|
@@ -0,0 +1,56 @@
|
|
1
|
+
import { describe, expect, it } from "vitest";
|
2
|
+
import { ANVIL_CHAIN } from "~test/chains.js";
|
3
|
+
import { TEST_CLIENT } from "~test/test-clients.js";
|
4
|
+
import { TEST_ACCOUNT_A } from "~test/test-wallets.js";
|
5
|
+
|
6
|
+
import { TEST_CONTRACT_URI } from "~test/ipfs-uris.js";
|
7
|
+
import { getContract } from "../../../../contract/contract.js";
|
8
|
+
import { deployERC721Contract } from "../../../../extensions/prebuilts/deploy-erc721.js";
|
9
|
+
import { sendAndConfirmTransaction } from "../../../../transaction/actions/send-and-confirm-transaction.js";
|
10
|
+
import { getNFTs } from "../../read/getNFTs.js";
|
11
|
+
import { lazyMint } from "../../write/lazyMint.js";
|
12
|
+
import { updateMetadata } from "./updateMetadata.js";
|
13
|
+
|
14
|
+
const account = TEST_ACCOUNT_A;
|
15
|
+
const client = TEST_CLIENT;
|
16
|
+
const chain = ANVIL_CHAIN;
|
17
|
+
|
18
|
+
describe.runIf(process.env.TW_SECRET_KEY)("updateMetadata ERC721", () => {
|
19
|
+
it("should update metadata", async () => {
|
20
|
+
const address = await deployERC721Contract({
|
21
|
+
client,
|
22
|
+
chain,
|
23
|
+
account,
|
24
|
+
type: "DropERC721",
|
25
|
+
params: {
|
26
|
+
name: "NFT Drop",
|
27
|
+
contractURI: TEST_CONTRACT_URI,
|
28
|
+
},
|
29
|
+
});
|
30
|
+
const contract = getContract({
|
31
|
+
address,
|
32
|
+
client,
|
33
|
+
chain,
|
34
|
+
});
|
35
|
+
const lazyMintTx = lazyMint({
|
36
|
+
contract,
|
37
|
+
nfts: [{ name: "token 0" }, { name: "token 1" }, { name: "token 2" }],
|
38
|
+
});
|
39
|
+
await sendAndConfirmTransaction({ transaction: lazyMintTx, account });
|
40
|
+
|
41
|
+
const updateTx = updateMetadata({
|
42
|
+
contract,
|
43
|
+
targetTokenId: 1n,
|
44
|
+
newMetadata: { name: "token 1 - updated" },
|
45
|
+
client,
|
46
|
+
});
|
47
|
+
await sendAndConfirmTransaction({ transaction: updateTx, account });
|
48
|
+
|
49
|
+
const nfts = await getNFTs({ contract });
|
50
|
+
|
51
|
+
expect(nfts.length).toBe(3);
|
52
|
+
expect(nfts[0]?.metadata.name).toBe("token 0");
|
53
|
+
expect(nfts[1]?.metadata.name).toBe("token 1 - updated");
|
54
|
+
expect(nfts[2]?.metadata.name).toBe("token 2");
|
55
|
+
});
|
56
|
+
});
|
@@ -265,7 +265,7 @@ function BuyScreenContent(props: BuyScreenContentProps) {
|
|
265
265
|
: props.connectOptions?.showAllWallets
|
266
266
|
}
|
267
267
|
walletConnect={props.connectOptions?.walletConnect}
|
268
|
-
wallets={props.connectOptions?.wallets}
|
268
|
+
wallets={props.connectOptions?.wallets?.filter((w) => w.id !== "inApp")}
|
269
269
|
/>
|
270
270
|
);
|
271
271
|
}
|
@@ -4,7 +4,8 @@ import { useCallback } from "react";
|
|
4
4
|
import type { Chain } from "../../../../../../chains/types.js";
|
5
5
|
import type { ThirdwebClient } from "../../../../../../client/client.js";
|
6
6
|
import { getContract } from "../../../../../../contract/contract.js";
|
7
|
-
import {
|
7
|
+
import { isERC721 } from "../../../../../../extensions/erc721/read/isERC721.js";
|
8
|
+
import { isERC1155 } from "../../../../../../extensions/erc1155/read/isERC1155.js";
|
8
9
|
import {
|
9
10
|
type CreateListingParams,
|
10
11
|
createListing,
|
@@ -74,12 +75,13 @@ export function CreateDirectListingButton(
|
|
74
75
|
});
|
75
76
|
const account = useActiveAccount();
|
76
77
|
const defaultPayModalMetadata = payModal ? payModal.metadata : undefined;
|
78
|
+
const nftContract = getContract({
|
79
|
+
address: assetContractAddress,
|
80
|
+
chain,
|
81
|
+
client,
|
82
|
+
});
|
77
83
|
const { data: payMetadata } = useReadContract(getPayMetadata, {
|
78
|
-
contract:
|
79
|
-
address: assetContractAddress,
|
80
|
-
chain,
|
81
|
-
client,
|
82
|
-
}),
|
84
|
+
contract: nftContract,
|
83
85
|
tokenId,
|
84
86
|
queryOptions: {
|
85
87
|
enabled: !defaultPayModalMetadata,
|
@@ -91,19 +93,78 @@ export function CreateDirectListingButton(
|
|
91
93
|
if (!account) {
|
92
94
|
throw new Error("No account detected");
|
93
95
|
}
|
96
|
+
const [is721, is1155] = await Promise.all([
|
97
|
+
isERC721({ contract: nftContract }),
|
98
|
+
isERC1155({ contract: nftContract }),
|
99
|
+
]);
|
100
|
+
if (!is1155 && !is721) {
|
101
|
+
throw new Error("Asset must either be ERC721 or ERC1155");
|
102
|
+
}
|
103
|
+
// Check for token approval
|
104
|
+
if (is1155) {
|
105
|
+
const [{ isApprovedForAll }, { setApprovalForAll }] = await Promise.all([
|
106
|
+
import(
|
107
|
+
"../../../../../../extensions/erc1155/__generated__/IERC1155/read/isApprovedForAll.js"
|
108
|
+
),
|
109
|
+
import(
|
110
|
+
"../../../../../../extensions/erc1155/__generated__/IERC1155/write/setApprovalForAll.js"
|
111
|
+
),
|
112
|
+
]);
|
113
|
+
const isApproved = await isApprovedForAll({
|
114
|
+
contract: nftContract,
|
115
|
+
operator: marketplaceContract.address,
|
116
|
+
owner: account.address,
|
117
|
+
});
|
118
|
+
if (!isApproved) {
|
119
|
+
const transaction = setApprovalForAll({
|
120
|
+
contract: nftContract,
|
121
|
+
operator: marketplaceContract.address,
|
122
|
+
approved: true,
|
123
|
+
});
|
124
|
+
await mutateAsync(transaction);
|
125
|
+
}
|
126
|
+
} else {
|
127
|
+
const [{ isApprovedForAll }, { setApprovalForAll }, { getApproved }] =
|
128
|
+
await Promise.all([
|
129
|
+
import(
|
130
|
+
"../../../../../../extensions/erc721/__generated__/IERC721A/read/isApprovedForAll.js"
|
131
|
+
),
|
132
|
+
import(
|
133
|
+
"../../../../../../extensions/erc721/__generated__/IERC721A/write/setApprovalForAll.js"
|
134
|
+
),
|
135
|
+
import(
|
136
|
+
"../../../../../../extensions/erc721/__generated__/IERC721A/read/getApproved.js"
|
137
|
+
),
|
138
|
+
]);
|
139
|
+
const [isApproved, tokenApproved] = await Promise.all([
|
140
|
+
isApprovedForAll({
|
141
|
+
contract: nftContract,
|
142
|
+
operator: marketplaceContract.address,
|
143
|
+
owner: account.address,
|
144
|
+
}),
|
145
|
+
getApproved({ contract: nftContract, tokenId: props.tokenId }),
|
146
|
+
]);
|
147
|
+
|
148
|
+
if (
|
149
|
+
!isApproved &&
|
150
|
+
tokenApproved.toLowerCase() !==
|
151
|
+
marketplaceContract.address.toLowerCase()
|
152
|
+
) {
|
153
|
+
const transaction = setApprovalForAll({
|
154
|
+
contract: nftContract,
|
155
|
+
operator: marketplaceContract.address,
|
156
|
+
approved: true,
|
157
|
+
});
|
158
|
+
await mutateAsync(transaction);
|
159
|
+
}
|
160
|
+
}
|
94
161
|
const listingTx = createListing({
|
95
162
|
contract: marketplaceContract,
|
96
163
|
...props,
|
97
164
|
});
|
98
|
-
|
99
|
-
transaction: listingTx,
|
100
|
-
account,
|
101
|
-
});
|
102
|
-
if (approveTx) {
|
103
|
-
await mutateAsync(approveTx);
|
104
|
-
}
|
165
|
+
|
105
166
|
return listingTx;
|
106
|
-
}, [marketplaceContract, props, account, mutateAsync]);
|
167
|
+
}, [marketplaceContract, props, account, mutateAsync, nftContract]);
|
107
168
|
|
108
169
|
return (
|
109
170
|
<TransactionButton
|
@@ -128,14 +189,10 @@ async function getPayMetadata(
|
|
128
189
|
}>,
|
129
190
|
): Promise<{ name?: string; image?: string }> {
|
130
191
|
const [
|
131
|
-
{ isERC721 },
|
132
|
-
{ isERC1155 },
|
133
192
|
{ getContractMetadata },
|
134
193
|
{ getNFT: getERC721 },
|
135
194
|
{ getNFT: getERC1155 },
|
136
195
|
] = await Promise.all([
|
137
|
-
import("../../../../../../extensions/erc721/read/isERC721.js"),
|
138
|
-
import("../../../../../../extensions/erc1155/read/isERC1155.js"),
|
139
196
|
import("../../../../../../extensions/common/read/getContractMetadata.js"),
|
140
197
|
import("../../../../../../extensions/erc721/read/getNFT.js"),
|
141
198
|
import("../../../../../../extensions/erc1155/read/getNFT.js"),
|
package/src/version.ts
CHANGED
@@ -1 +1 @@
|
|
1
|
-
export const version = "5.
|
1
|
+
export const version = "5.50.0-nightly-ff3abfa79e4f5f8806676d97c11ff24ffd62266f-20240901000406";
|