1
+ import { useThemeMode } from '../hooks/useThemeMode' ;
2
+ import BAICodeEditor from './BAICodeEditor' ;
1
3
import BAIModal , { BAIModalProps } from './BAIModal' ;
4
+ import Flex from './Flex' ;
2
5
import HiddenFormItem from './HiddenFormItem' ;
3
- import { ContainerRegistryEditorModalCreateMutation } from './__generated__/ContainerRegistryEditorModalCreateMutation.graphql' ;
6
+ import {
7
+ ContainerRegistryEditorModalCreateMutation ,
8
+ ContainerRegistryEditorModalCreateMutation$variables ,
9
+ } from './__generated__/ContainerRegistryEditorModalCreateMutation.graphql' ;
4
10
import { ContainerRegistryEditorModalFragment$key } from './__generated__/ContainerRegistryEditorModalFragment.graphql' ;
5
- import { ContainerRegistryEditorModalModifyMutation } from './__generated__/ContainerRegistryEditorModalModifyMutation.graphql' ;
6
- import { ContainerRegistryEditorModalModifyWithoutPasswordMutation } from './__generated__/ContainerRegistryEditorModalModifyWithoutPasswordMutation.graphql' ;
7
- import { Form , Input , Select , Checkbox , FormInstance , App } from 'antd' ;
11
+ import {
12
+ ContainerRegistryEditorModalModifyMutation ,
13
+ ContainerRegistryEditorModalModifyMutation$variables ,
14
+ } from './__generated__/ContainerRegistryEditorModalModifyMutation.graphql' ;
15
+ import {
16
+ ContainerRegistryEditorModalModifyWithoutPasswordMutation ,
17
+ ContainerRegistryEditorModalModifyWithoutPasswordMutation$variables ,
18
+ } from './__generated__/ContainerRegistryEditorModalModifyWithoutPasswordMutation.graphql' ;
19
+ import { Form , Input , Select , Checkbox , FormInstance , App , theme } from 'antd' ;
8
20
import graphql from 'babel-plugin-relay/macro' ;
9
21
import _ from 'lodash' ;
10
22
import React , { useRef } from 'react' ;
@@ -20,6 +32,8 @@ const ContainerRegistryEditorModal: React.FC<
20
32
ContainerRegistryEditorModalProps
21
33
> = ( { containerRegistryFrgmt = null , onOk, ...modalProps } ) => {
22
34
const { t } = useTranslation ( ) ;
35
+ const { token } = theme . useToken ( ) ;
36
+ const { isDarkMode } = useThemeMode ( ) ;
23
37
const formRef = useRef < FormInstance > ( null ) ;
24
38
25
39
const { message, modal } = App . useApp ( ) ;
@@ -36,6 +50,7 @@ const ContainerRegistryEditorModal: React.FC<
36
50
project
37
51
username
38
52
ssl_verify
53
+ extra
39
54
}
40
55
` ,
41
56
containerRegistryFrgmt ,
@@ -51,6 +66,7 @@ const ContainerRegistryEditorModal: React.FC<
51
66
$project: String
52
67
$ssl_verify: Boolean
53
68
$username: String
69
+ $extra: JSONString
54
70
) {
55
71
create_container_registry_node(
56
72
registry_name: $registry_name
@@ -61,6 +77,7 @@ const ContainerRegistryEditorModal: React.FC<
61
77
project: $project
62
78
ssl_verify: $ssl_verify
63
79
username: $username
80
+ extra: $extra
64
81
) {
65
82
container_registry {
66
83
id
@@ -81,6 +98,7 @@ const ContainerRegistryEditorModal: React.FC<
81
98
$project: String
82
99
$ssl_verify: Boolean
83
100
$username: String
101
+ $extra: JSONString
84
102
) {
85
103
modify_container_registry_node(
86
104
id: $id
@@ -92,6 +110,7 @@ const ContainerRegistryEditorModal: React.FC<
92
110
project: $project
93
111
ssl_verify: $ssl_verify
94
112
username: $username
113
+ extra: $extra
95
114
) {
96
115
container_registry {
97
116
id
@@ -114,6 +133,7 @@ const ContainerRegistryEditorModal: React.FC<
114
133
$project: String
115
134
$ssl_verify: Boolean
116
135
$username: String
136
+ $extra: JSONString
117
137
) {
118
138
modify_container_registry_node(
119
139
id: $id
@@ -124,6 +144,7 @@ const ContainerRegistryEditorModal: React.FC<
124
144
project: $project
125
145
ssl_verify: $ssl_verify
126
146
username: $username
147
+ extra: $extra
127
148
) {
128
149
container_registry {
129
150
id
@@ -137,25 +158,34 @@ const ContainerRegistryEditorModal: React.FC<
137
158
return formRef . current
138
159
?. validateFields ( )
139
160
. then ( ( values ) => {
140
- let mutationVariables = {
141
- id : _ . isEmpty ( values . row_id ) ? undefined : values . row_id ,
142
- registry_name : values . registry_name ,
143
- url : values . url ,
144
- type : values . type ,
145
- project : values . project ,
146
- username : _ . isEmpty ( values . username ) ? null : values . username ,
147
- password :
148
- values . isChangedPassword || ! containerRegistry
149
- ? _ . isEmpty ( values . password )
150
- ? null // unset
151
- : values . password
152
- : undefined , // no change
153
- } ;
161
+ let mutationVariables :
162
+ | ContainerRegistryEditorModalCreateMutation$variables
163
+ | ContainerRegistryEditorModalModifyMutation$variables
164
+ | ContainerRegistryEditorModalModifyWithoutPasswordMutation$variables =
165
+ {
166
+ id : _ . isEmpty ( values . row_id ) ? undefined : values . row_id ,
167
+ registry_name : values . registry_name ,
168
+ url : values . url ,
169
+ type : values . type ,
170
+ project : values . project ,
171
+ username : _ . isEmpty ( values . username ) ? null : values . username ,
172
+ password :
173
+ values . isChangedPassword || ! containerRegistry
174
+ ? _ . isEmpty ( values . password )
175
+ ? null // unset
176
+ : values . password
177
+ : undefined , // no change
178
+ extra : _ . isEmpty ( values . extra )
179
+ ? null
180
+ : JSON . stringify ( values . extra ) ,
181
+ } ;
182
+
154
183
if ( containerRegistry ) {
155
184
if ( ! values . isChangedPassword ) {
156
185
delete mutationVariables . password ;
157
186
commitModifyRegistryWithoutPassword ( {
158
- variables : mutationVariables ,
187
+ variables :
188
+ mutationVariables as ContainerRegistryEditorModalModifyWithoutPasswordMutation$variables ,
159
189
onCompleted : ( res , errors ) => {
160
190
if (
161
191
_ . isEmpty (
@@ -180,7 +210,8 @@ const ContainerRegistryEditorModal: React.FC<
180
210
} ) ;
181
211
} else {
182
212
commitModifyRegistry ( {
183
- variables : mutationVariables ,
213
+ variables :
214
+ mutationVariables as ContainerRegistryEditorModalModifyMutation$variables ,
184
215
onCompleted : ( res , errors ) => {
185
216
if (
186
217
_ . isEmpty (
@@ -209,7 +240,8 @@ const ContainerRegistryEditorModal: React.FC<
209
240
typeof mutationVariables
210
241
> ;
211
242
commitCreateRegistry ( {
212
- variables : mutationVariables ,
243
+ variables :
244
+ mutationVariables as ContainerRegistryEditorModalCreateMutation$variables ,
213
245
onCompleted : ( res , errors ) => {
214
246
if (
215
247
_ . isEmpty (
@@ -284,6 +316,9 @@ const ContainerRegistryEditorModal: React.FC<
284
316
containerRegistry
285
317
? {
286
318
...containerRegistry ,
319
+ extra : containerRegistry ?. extra
320
+ ? JSON . parse ( containerRegistry . extra ?? '{}' )
321
+ : '' ,
287
322
}
288
323
: { }
289
324
}
@@ -474,6 +509,43 @@ const ContainerRegistryEditorModal: React.FC<
474
509
) ;
475
510
} }
476
511
</ Form . Item >
512
+ < Form . Item label = { t ( 'registry.ExtraInformation' ) } >
513
+ < Flex
514
+ style = { {
515
+ border : `1px solid ${ token . colorBorder } ` ,
516
+ borderRadius : token . borderRadius ,
517
+ overflow : 'hidden' ,
518
+ } }
519
+ >
520
+ < Form . Item
521
+ name = "extra"
522
+ noStyle
523
+ rules = { [
524
+ {
525
+ validator : ( _ , value ) => {
526
+ if ( value ) {
527
+ try {
528
+ JSON . parse ( value ) ;
529
+ } catch ( e ) {
530
+ return Promise . reject (
531
+ t ( 'registry.DescExtraJsonFormat' ) ,
532
+ ) ;
533
+ }
534
+ }
535
+ return Promise . resolve ( ) ;
536
+ } ,
537
+ } ,
538
+ ] }
539
+ >
540
+ < BAICodeEditor
541
+ editable
542
+ language = "json"
543
+ theme = { isDarkMode ? 'dark' : 'light' }
544
+ style = { { width : '100%' } }
545
+ />
546
+ </ Form . Item >
547
+ </ Flex >
548
+ </ Form . Item >
477
549
</ Form >
478
550
</ BAIModal >
479
551
) ;
0 commit comments