1
1
import { FormControl } from "@chakra-ui/react" ;
2
2
import { useQuery } from "@tanstack/react-query" ;
3
3
import { SolidityInput } from "contract-ui/components/solidity-inputs" ;
4
- import { getExtensionInstalledParams } from "contract-ui/tabs/manage/components/getExtensionInstalledParams " ;
4
+ import { getModuleInstalledParams } from "contract-ui/tabs/manage/components/getModuleInstalledParams " ;
5
5
import invariant from "tiny-invariant" ;
6
6
import { FormErrorMessage , FormLabel } from "tw-components" ;
7
7
import type { CustomContractDeploymentForm } from "./custom-contract" ;
8
8
import { PrimarySaleFieldset } from "./primary-sale-fieldset" ;
9
9
import { RoyaltyFieldset } from "./royalty-fieldset" ;
10
10
11
- type ExtensionMeta = {
12
- extensionName : string ;
13
- extensionVersion : string ;
11
+ type ModuleMeta = {
12
+ moduleName : string ;
13
+ moduleVersion : string ;
14
14
publisherAddress : string ;
15
15
} ;
16
16
17
17
/**
18
- * Get the install params for all given extensions
18
+ * Get the install params for all given modules
19
19
*/
20
- export function useModularContractsDefaultExtensionsInstallParams ( props : {
21
- defaultExtensions ?: ExtensionMeta [ ] ;
20
+ export function useModularContractsDefaultModulesInstallParams ( props : {
21
+ defaultModules ?: ModuleMeta [ ] ;
22
22
isQueryEnabled : boolean ;
23
23
} ) {
24
- const { defaultExtensions , isQueryEnabled } = props ;
24
+ const { defaultModules , isQueryEnabled } = props ;
25
25
return useQuery ( {
26
26
queryKey : [
27
- "useModularContractsDefaultExtensionsInstallParams " ,
28
- defaultExtensions ,
27
+ "useModularContractsDefaultModulesInstallParams " ,
28
+ defaultModules ,
29
29
] ,
30
30
queryFn : async ( ) => {
31
- invariant ( defaultExtensions , "defaultExtensions must be defined" ) ;
32
- return Promise . all ( defaultExtensions . map ( getExtensionInstalledParams ) ) ;
31
+ invariant ( defaultModules , "defaultModules must be defined" ) ;
32
+ return Promise . all ( defaultModules . map ( getModuleInstalledParams ) ) ;
33
33
} ,
34
- enabled : ! ! ( isQueryEnabled && defaultExtensions ) ,
34
+ enabled : ! ! ( isQueryEnabled && defaultModules ) ,
35
35
refetchOnWindowFocus : false ,
36
36
} ) ;
37
37
}
38
38
39
- export type UseModularContractsDefaultExtensionsInstallParams = ReturnType <
40
- typeof useModularContractsDefaultExtensionsInstallParams
39
+ export type UseModularContractsDefaultModulesInstallParams = ReturnType <
40
+ typeof useModularContractsDefaultModulesInstallParams
41
41
> ;
42
42
43
- type Extensions = NonNullable <
44
- UseModularContractsDefaultExtensionsInstallParams [ "data" ]
43
+ type Modules = NonNullable <
44
+ UseModularContractsDefaultModulesInstallParams [ "data" ]
45
45
> ;
46
46
47
- type ExtensionWithIndex = Extensions [ number ] & { extensionIndex : number } ;
47
+ type ModuleWithIndex = Modules [ number ] & { moduleIndex : number } ;
48
48
49
- export function ModularContractDefaultExtensionsFieldset ( props : {
50
- extensions : Extensions ;
49
+ export function ModularContractDefaultModulesFieldset ( props : {
50
+ modules : Modules ;
51
51
form : CustomContractDeploymentForm ;
52
52
isTWPublisher : boolean ;
53
53
} ) {
54
- // save the index of the extension before filtering out
55
- const extensionsWithIndex : ExtensionWithIndex [ ] = props . extensions
54
+ // save the index of the module before filtering out
55
+ const modulesWithIndex : ModuleWithIndex [ ] = props . modules
56
56
. map ( ( v , i ) => ( {
57
57
...v ,
58
- extensionIndex : i ,
58
+ moduleIndex : i ,
59
59
} ) )
60
60
. filter ( ( v ) => v . params . length > 0 ) ;
61
61
62
62
return (
63
63
< div className = "py-4" >
64
64
< div className = "flex flex-col gap-4" >
65
- { extensionsWithIndex . map ( ( ext ) => {
65
+ { modulesWithIndex . map ( ( ext ) => {
66
66
return (
67
- < RenderExtension
68
- key = { ext . extensionName }
69
- extension = { ext }
67
+ < RenderModule
68
+ key = { ext . moduleName }
69
+ module = { ext }
70
70
isTWPublisher = { props . isTWPublisher }
71
71
form = { props . form }
72
72
/>
@@ -77,47 +77,39 @@ export function ModularContractDefaultExtensionsFieldset(props: {
77
77
) ;
78
78
}
79
79
80
- function RenderExtension ( props : {
81
- extension : ExtensionWithIndex ;
80
+ function RenderModule ( props : {
81
+ module : ModuleWithIndex ;
82
82
form : CustomContractDeploymentForm ;
83
83
isTWPublisher : boolean ;
84
84
} ) {
85
- const { extension , form } = props ;
85
+ const { module , form } = props ;
86
86
87
87
// only consider mapping if published by thirdweb, else show the generic form
88
88
if ( props . isTWPublisher ) {
89
- const paramNames = extension . params . map ( ( param ) => param . name ) ;
89
+ const paramNames = module . params . map ( ( param ) => param . name ) ;
90
90
91
91
if ( showRoyaltyFieldset ( paramNames ) ) {
92
92
return (
93
- < RenderRoyaltyFieldset
94
- extension = { extension }
95
- form = { form }
96
- isTWPublisher
97
- />
93
+ < RenderRoyaltyFieldset module = { module } form = { form } isTWPublisher />
98
94
) ;
99
95
}
100
96
101
97
if ( showPrimarySaleFiedset ( paramNames ) ) {
102
98
return (
103
- < RenderPrimarySaleFieldset
104
- extension = { extension }
105
- form = { form }
106
- isTWPublisher
107
- />
99
+ < RenderPrimarySaleFieldset module = { module } form = { form } isTWPublisher />
108
100
) ;
109
101
}
110
102
}
111
103
112
104
return (
113
105
< div >
114
106
< h3 className = "text-lg mb-2 text-secondary-foreground font-medium" >
115
- { extension . extensionName }
107
+ { module . moduleName }
116
108
</ h3 >
117
109
< div className = "flex flex-col gap-3" >
118
- { extension . params . map ( ( param ) => {
110
+ { module . params . map ( ( param ) => {
119
111
const formFieldKey =
120
- `modularContractDefaultExtensionsInstallParams .${ extension . extensionIndex } .${ param . name } ` as const ;
112
+ `modularContractDefaultModulesInstallParams .${ module . moduleIndex } .${ param . name } ` as const ;
121
113
122
114
return (
123
115
< FormControl
@@ -149,14 +141,14 @@ function RenderExtension(props: {
149
141
}
150
142
151
143
function RenderPrimarySaleFieldset ( prosp : {
152
- extension : ExtensionWithIndex ;
144
+ module : ModuleWithIndex ;
153
145
form : CustomContractDeploymentForm ;
154
146
isTWPublisher : boolean ;
155
147
} ) {
156
- const { extension , form } = prosp ;
148
+ const { module , form } = prosp ;
157
149
158
150
const primarySaleRecipientPath =
159
- `modularContractDefaultExtensionsInstallParams .${ extension . extensionIndex } .primarySaleRecipient` as const ;
151
+ `modularContractDefaultModulesInstallParams .${ module . moduleIndex } .primarySaleRecipient` as const ;
160
152
161
153
return (
162
154
< PrimarySaleFieldset
@@ -173,17 +165,17 @@ function RenderPrimarySaleFieldset(prosp: {
173
165
}
174
166
175
167
function RenderRoyaltyFieldset ( props : {
176
- extension : ExtensionWithIndex ;
168
+ module : ModuleWithIndex ;
177
169
form : CustomContractDeploymentForm ;
178
170
isTWPublisher : boolean ;
179
171
} ) {
180
- const { extension : ext , form } = props ;
172
+ const { module : ext , form } = props ;
181
173
182
174
const royaltyRecipientPath =
183
- `modularContractDefaultExtensionsInstallParams .${ ext . extensionIndex } .royaltyRecipient` as const ;
175
+ `modularContractDefaultModulesInstallParams .${ ext . moduleIndex } .royaltyRecipient` as const ;
184
176
185
177
const royaltyBpsPath =
186
- `modularContractDefaultExtensionsInstallParams .${ ext . extensionIndex } .royaltyBps` as const ;
178
+ `modularContractDefaultModulesInstallParams .${ ext . moduleIndex } .royaltyBps` as const ;
187
179
188
180
return (
189
181
< RoyaltyFieldset
0 commit comments