@@ -49,6 +49,22 @@ const serverFormSchema = z.object({
4949 enable_ddns : asOptionalField ( z . boolean ( ) ) ,
5050 ddns_profiles : asOptionalField ( z . array ( z . number ( ) ) ) ,
5151 ddns_profiles_raw : asOptionalField ( z . string ( ) ) ,
52+ override_ddns_domains : asOptionalField ( z . record ( z . coerce . number ( ) . int ( ) , z . array ( z . string ( ) ) ) ) ,
53+ override_ddns_domains_raw : asOptionalField (
54+ z . string ( ) . refine (
55+ ( val ) => {
56+ try {
57+ JSON . parse ( val )
58+ return true
59+ } catch ( e ) {
60+ return false
61+ }
62+ } ,
63+ {
64+ message : "Invalid JSON string" ,
65+ } ,
66+ ) ,
67+ ) ,
5268} )
5369
5470export const ServerCard : React . FC < ServerCardProps > = ( { data, mutate } ) => {
@@ -58,6 +74,9 @@ export const ServerCard: React.FC<ServerCardProps> = ({ data, mutate }) => {
5874 defaultValues : {
5975 ...data ,
6076 ddns_profiles_raw : data . ddns_profiles ? conv . arrToStr ( data . ddns_profiles ) : undefined ,
77+ override_ddns_domains_raw : data . override_ddns_domains
78+ ? JSON . stringify ( data . override_ddns_domains )
79+ : undefined ,
6180 } ,
6281 resetOptions : {
6382 keepDefaultValues : false ,
@@ -71,6 +90,9 @@ export const ServerCard: React.FC<ServerCardProps> = ({ data, mutate }) => {
7190 values . ddns_profiles = values . ddns_profiles_raw
7291 ? conv . strToArr ( values . ddns_profiles_raw ) . map ( Number )
7392 : undefined
93+ values . override_ddns_domains = values . override_ddns_domains_raw
94+ ? JSON . parse ( values . override_ddns_domains_raw )
95+ : undefined
7496 await updateServer ( data ! . id ! , values )
7597 } catch ( e ) {
7698 console . error ( e )
@@ -124,21 +146,43 @@ export const ServerCard: React.FC<ServerCardProps> = ({ data, mutate }) => {
124146 </ FormItem >
125147 ) }
126148 />
127- < FormField
128- control = { form . control }
129- name = "ddns_profiles_raw"
130- render = { ( { field } ) => (
131- < FormItem >
132- < FormLabel >
133- { t ( "DDNSProfiles" ) + t ( "SeparateWithComma" ) }
134- </ FormLabel >
135- < FormControl >
136- < Input placeholder = "1,2,3" { ...field } />
137- </ FormControl >
138- < FormMessage />
139- </ FormItem >
140- ) }
141- />
149+ { form . watch ( "enable_ddns" ) ? (
150+ < >
151+ < FormField
152+ control = { form . control }
153+ name = "ddns_profiles_raw"
154+ render = { ( { field } ) => (
155+ < FormItem >
156+ < FormLabel >
157+ { t ( "DDNSProfiles" ) + t ( "SeparateWithComma" ) }
158+ </ FormLabel >
159+ < FormControl >
160+ < Input placeholder = "1,2,3" { ...field } />
161+ </ FormControl >
162+ < FormMessage />
163+ </ FormItem >
164+ ) }
165+ />
166+ < FormField
167+ control = { form . control }
168+ name = "override_ddns_domains_raw"
169+ render = { ( { field } ) => (
170+ < FormItem >
171+ < FormLabel >
172+ { t ( "OverrideDDNSDomains" ) }
173+ </ FormLabel >
174+ < FormControl >
175+ < Textarea className = "resize-y" { ...field } />
176+ </ FormControl >
177+ < FormMessage />
178+ </ FormItem >
179+ ) }
180+ />
181+ </ >
182+ ) : (
183+ < > </ >
184+ ) }
185+
142186 < FormField
143187 control = { form . control }
144188 name = "enable_ddns"
0 commit comments