1
+ import { THIRDWEB_CLIENT } from "@/lib/client" ;
2
+ import { useQuery } from "@tanstack/react-query" ;
1
3
import { Suspense , lazy } from "react" ;
4
+ import { defineChain , getContract , toUnits } from "thirdweb" ;
5
+ import { getCurrencyMetadata } from "thirdweb/extensions/erc20" ;
2
6
import { CodeLoading } from "../../../../components/code/code.client" ;
3
7
import type { BridgeComponentsPlaygroundOptions } from "./types" ;
4
- import { useQuery } from "@tanstack/react-query" ;
5
- import { getCurrencyMetadata } from "thirdweb/extensions/erc20" ;
6
- import { defineChain , getContract , toUnits } from "thirdweb" ;
7
- import { THIRDWEB_CLIENT } from "@/lib/client" ;
8
8
9
9
const CodeClient = lazy (
10
10
( ) => import ( "../../../../components/code/code.client" ) ,
@@ -13,11 +13,36 @@ const CodeClient = lazy(
13
13
export function CodeGen ( props : {
14
14
options : BridgeComponentsPlaygroundOptions ;
15
15
} ) {
16
+ const { options } = props ;
17
+ const { data : amount } = useQuery ( {
18
+ queryKey : [
19
+ "amount" ,
20
+ options . payOptions . buyTokenAmount ,
21
+ options . payOptions . buyTokenChain ,
22
+ options . payOptions . buyTokenAddress ,
23
+ ] ,
24
+ queryFn : async ( ) => {
25
+ if ( ! options . payOptions . buyTokenAmount ) {
26
+ return ;
27
+ }
28
+ const contract = getContract ( {
29
+ chain : defineChain ( options . payOptions . buyTokenChain . id ) ,
30
+ address : options . payOptions . buyTokenAddress ,
31
+ client : THIRDWEB_CLIENT ,
32
+ } ) ;
33
+ const token = await getCurrencyMetadata ( {
34
+ contract,
35
+ } ) ;
36
+
37
+ return toUnits ( options . payOptions . buyTokenAmount , token . decimals ) ;
38
+ } ,
39
+ } ) ;
40
+
16
41
return (
17
42
< div className = "flex w-full grow flex-col" >
18
43
< Suspense fallback = { < CodeLoading /> } >
19
44
< CodeClient
20
- code = { getCode ( props . options ) }
45
+ code = { getCode ( props . options , amount ) }
21
46
lang = "tsx"
22
47
loader = { < CodeLoading /> }
23
48
className = "grow"
@@ -27,7 +52,7 @@ export function CodeGen(props: {
27
52
) ;
28
53
}
29
54
30
- function getCode ( options : BridgeComponentsPlaygroundOptions ) {
55
+ function getCode ( options : BridgeComponentsPlaygroundOptions , amount ?: bigint ) {
31
56
const imports = {
32
57
react : [ "PayEmbed" ] as string [ ] ,
33
58
thirdweb : [ ] as string [ ] ,
@@ -48,30 +73,6 @@ function getCode(options: BridgeComponentsPlaygroundOptions) {
48
73
imports . chains . push ( "base" ) ;
49
74
}
50
75
51
- const { data : amount } = useQuery ( {
52
- queryKey : [
53
- "amount" ,
54
- options . payOptions . buyTokenAmount ,
55
- options . payOptions . buyTokenChain ,
56
- options . payOptions . buyTokenAddress ,
57
- ] ,
58
- queryFn : async ( ) => {
59
- if ( ! options . payOptions . buyTokenAmount ) {
60
- return ;
61
- }
62
- const contract = getContract ( {
63
- chain : defineChain ( options . payOptions . buyTokenChain . id ) ,
64
- address : options . payOptions . buyTokenAddress ,
65
- client : THIRDWEB_CLIENT ,
66
- } ) ;
67
- const token = await getCurrencyMetadata ( {
68
- contract,
69
- } ) ;
70
-
71
- return toUnits ( options . payOptions . buyTokenAmount , token . decimals ) ;
72
- } ,
73
- } ) ;
74
-
75
76
imports . wallets . push ( "createWallet" ) ;
76
77
77
78
const componentName = ( ( ) => {
@@ -103,15 +104,16 @@ function Example() {
103
104
<${ componentName }
104
105
client={client}
105
106
chain={defineChain(${ options . payOptions . buyTokenChain . id } )}
106
- amount={${ amount } n}${ options . payOptions . buyTokenAddress ? `\n\t token="${ options . payOptions . buyTokenAddress } "` : "" } ${ options . payOptions . sellerAddress ? `\n\t seller="${ options . payOptions . sellerAddress } "` : "" } ${ options . payOptions . title ? `\n\t ${ options . payOptions . widget === "checkout" ? "name" : "title" } ="${ options . payOptions . title } "` : "" } ${ options . payOptions . image ? `\n\t image="${ options . payOptions . image } "` : "" } ${ options . payOptions . description ? `\n\t description="${ options . payOptions . description } "` : "" } ${ options . payOptions . widget === "transaction"
107
- ? `\n\t transaction={claimTo({
107
+ amount={${ amount } n}${ options . payOptions . buyTokenAddress ? `\n\t token="${ options . payOptions . buyTokenAddress } "` : "" } ${ options . payOptions . sellerAddress ? `\n\t seller="${ options . payOptions . sellerAddress } "` : "" } ${ options . payOptions . title ? `\n\t ${ options . payOptions . widget === "checkout" ? "name" : "title" } ="${ options . payOptions . title } "` : "" } ${ options . payOptions . image ? `\n\t image="${ options . payOptions . image } "` : "" } ${ options . payOptions . description ? `\n\t description="${ options . payOptions . description } "` : "" } ${
108
+ options . payOptions . widget === "transaction"
109
+ ? `\n\t transaction={claimTo({
108
110
contract: nftContract,
109
111
quantity: 1n,
110
112
tokenId: 2n,
111
113
to: account?.address || "",
112
114
})}`
113
- : ""
114
- }
115
+ : ""
116
+ }
115
117
/>
116
118
);
117
119
}` ;
0 commit comments