@@ -5,6 +5,7 @@ import AddIcon from '@mui/icons-material/Add';
5
5
import { Ref } from '../../Refs' ;
6
6
import { v1 } from "@docker/extension-api-client-types" ;
7
7
import Secrets from '../../Secrets' ;
8
+ import { config } from 'process' ;
8
9
9
10
interface ToolCatalogProps {
10
11
search : string ;
@@ -17,34 +18,40 @@ interface ToolCatalogProps {
17
18
onSecretChange : ( secret : { name : string , value : string } ) => Promise < void > ;
18
19
secrets : Secrets . Secret [ ] ;
19
20
registryItems : { [ key : string ] : { ref : string , config : any } } ;
21
+ setConfiguringItem : ( item : CatalogItemWithName ) => void ;
22
+ config : { [ key : string ] : { [ key : string ] : any } } ;
20
23
}
21
24
22
- const ToolCatalog : React . FC < ToolCatalogProps > = ( { search, catalogItems, client, ddVersion, canRegister, register, unregister, onSecretChange, secrets, registryItems } ) => {
25
+ const ToolCatalog : React . FC < ToolCatalogProps > = ( { config , setConfiguringItem , search, catalogItems, client, ddVersion, canRegister, register, unregister, onSecretChange, secrets, registryItems } ) => {
23
26
const filteredCatalogItems = catalogItems . filter ( item =>
24
27
item . name . toLowerCase ( ) . includes ( search . toLowerCase ( ) )
25
28
) ;
26
29
27
30
return (
28
31
< Grid2 container spacing = { 1 } width = '90vw' maxWidth = { 1000 } >
29
- { filteredCatalogItems . map ( ( catalogItem ) => (
30
- < Grid2 size = { { xs : 12 , sm : 6 , md : 4 } } key = { catalogItem . name } >
31
- < CatalogItemCard
32
- hasAllConfig = { true }
33
- setConfiguringItem = { ( ) => { } }
34
- openUrl = { ( ) => {
35
- client . host . openExternal ( Ref . fromRef ( catalogItem . ref ) . toURL ( true ) ) ;
36
- } }
37
- item = { catalogItem }
38
- ddVersion = { ddVersion }
39
- canRegister = { canRegister }
40
- registered = { registryItems [ catalogItem . name ] ?. ref !== undefined }
41
- register = { register }
42
- unregister = { unregister }
43
- onSecretChange = { onSecretChange }
44
- secrets = { secrets }
45
- />
46
- </ Grid2 >
47
- ) ) }
32
+ { filteredCatalogItems . map ( ( catalogItem ) => {
33
+ const expectedKeys = catalogItem . config ?. map ( ( c : any ) => Object . keys ( c . parameters ) ) . flat ( ) || [ ] ;
34
+ const hasAllConfig = ! catalogItem . config || expectedKeys ?. every ( ( c : any ) => config [ catalogItem . name ] ?. [ c ] !== undefined ) ;
35
+ return (
36
+ < Grid2 size = { { xs : 12 , sm : 6 , md : 4 } } key = { catalogItem . name } >
37
+ < CatalogItemCard
38
+ hasAllConfig = { hasAllConfig }
39
+ setConfiguringItem = { setConfiguringItem }
40
+ openUrl = { ( ) => {
41
+ client . host . openExternal ( Ref . fromRef ( catalogItem . ref ) . toURL ( true ) ) ;
42
+ } }
43
+ item = { catalogItem }
44
+ ddVersion = { ddVersion }
45
+ canRegister = { canRegister }
46
+ registered = { registryItems [ catalogItem . name ] ?. ref !== undefined }
47
+ register = { register }
48
+ unregister = { unregister }
49
+ onSecretChange = { onSecretChange }
50
+ secrets = { secrets }
51
+ />
52
+ </ Grid2 >
53
+ )
54
+ } ) }
48
55
< Grid2 size = { 12 } >
49
56
< Card sx = { { height : '100%' , display : 'flex' , justifyContent : 'center' , alignItems : 'center' } } >
50
57
< CardContent >
0 commit comments