1+ import { useThemeMode } from '../hooks/useThemeMode' ;
2+ import BAICodeEditor from './BAICodeEditor' ;
13import BAIModal , { BAIModalProps } from './BAIModal' ;
4+ import Flex from './Flex' ;
25import HiddenFormItem from './HiddenFormItem' ;
3- import { ContainerRegistryEditorModalCreateMutation } from './__generated__/ContainerRegistryEditorModalCreateMutation.graphql' ;
6+ import {
7+ ContainerRegistryEditorModalCreateMutation ,
8+ ContainerRegistryEditorModalCreateMutation$variables ,
9+ } from './__generated__/ContainerRegistryEditorModalCreateMutation.graphql' ;
410import { 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' ;
820import graphql from 'babel-plugin-relay/macro' ;
921import _ from 'lodash' ;
1022import React , { useRef } from 'react' ;
@@ -20,6 +32,8 @@ const ContainerRegistryEditorModal: React.FC<
2032 ContainerRegistryEditorModalProps
2133> = ( { containerRegistryFrgmt = null , onOk, ...modalProps } ) => {
2234 const { t } = useTranslation ( ) ;
35+ const { token } = theme . useToken ( ) ;
36+ const { isDarkMode } = useThemeMode ( ) ;
2337 const formRef = useRef < FormInstance > ( null ) ;
2438
2539 const { message, modal } = App . useApp ( ) ;
@@ -36,6 +50,7 @@ const ContainerRegistryEditorModal: React.FC<
3650 project
3751 username
3852 ssl_verify
53+ extra
3954 }
4055 ` ,
4156 containerRegistryFrgmt ,
@@ -51,6 +66,7 @@ const ContainerRegistryEditorModal: React.FC<
5166 $project: String
5267 $ssl_verify: Boolean
5368 $username: String
69+ $extra: JSONString
5470 ) {
5571 create_container_registry_node(
5672 registry_name: $registry_name
@@ -61,6 +77,7 @@ const ContainerRegistryEditorModal: React.FC<
6177 project: $project
6278 ssl_verify: $ssl_verify
6379 username: $username
80+ extra: $extra
6481 ) {
6582 container_registry {
6683 id
@@ -81,6 +98,7 @@ const ContainerRegistryEditorModal: React.FC<
8198 $project: String
8299 $ssl_verify: Boolean
83100 $username: String
101+ $extra: JSONString
84102 ) {
85103 modify_container_registry_node(
86104 id: $id
@@ -92,6 +110,7 @@ const ContainerRegistryEditorModal: React.FC<
92110 project: $project
93111 ssl_verify: $ssl_verify
94112 username: $username
113+ extra: $extra
95114 ) {
96115 container_registry {
97116 id
@@ -114,6 +133,7 @@ const ContainerRegistryEditorModal: React.FC<
114133 $project: String
115134 $ssl_verify: Boolean
116135 $username: String
136+ $extra: JSONString
117137 ) {
118138 modify_container_registry_node(
119139 id: $id
@@ -124,6 +144,7 @@ const ContainerRegistryEditorModal: React.FC<
124144 project: $project
125145 ssl_verify: $ssl_verify
126146 username: $username
147+ extra: $extra
127148 ) {
128149 container_registry {
129150 id
@@ -137,25 +158,34 @@ const ContainerRegistryEditorModal: React.FC<
137158 return formRef . current
138159 ?. validateFields ( )
139160 . 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+
154183 if ( containerRegistry ) {
155184 if ( ! values . isChangedPassword ) {
156185 delete mutationVariables . password ;
157186 commitModifyRegistryWithoutPassword ( {
158- variables : mutationVariables ,
187+ variables :
188+ mutationVariables as ContainerRegistryEditorModalModifyWithoutPasswordMutation$variables ,
159189 onCompleted : ( res , errors ) => {
160190 if (
161191 _ . isEmpty (
@@ -180,7 +210,8 @@ const ContainerRegistryEditorModal: React.FC<
180210 } ) ;
181211 } else {
182212 commitModifyRegistry ( {
183- variables : mutationVariables ,
213+ variables :
214+ mutationVariables as ContainerRegistryEditorModalModifyMutation$variables ,
184215 onCompleted : ( res , errors ) => {
185216 if (
186217 _ . isEmpty (
@@ -209,7 +240,8 @@ const ContainerRegistryEditorModal: React.FC<
209240 typeof mutationVariables
210241 > ;
211242 commitCreateRegistry ( {
212- variables : mutationVariables ,
243+ variables :
244+ mutationVariables as ContainerRegistryEditorModalCreateMutation$variables ,
213245 onCompleted : ( res , errors ) => {
214246 if (
215247 _ . isEmpty (
@@ -284,6 +316,9 @@ const ContainerRegistryEditorModal: React.FC<
284316 containerRegistry
285317 ? {
286318 ...containerRegistry ,
319+ extra : containerRegistry ?. extra
320+ ? JSON . parse ( containerRegistry . extra ?? '{}' )
321+ : '' ,
287322 }
288323 : { }
289324 }
@@ -474,6 +509,43 @@ const ContainerRegistryEditorModal: React.FC<
474509 ) ;
475510 } }
476511 </ 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 >
477549 </ Form >
478550 </ BAIModal >
479551 ) ;
0 commit comments