@@ -5,6 +5,7 @@ import AddIcon from '@mui/icons-material/Add';
55import { Ref } from '../../Refs' ;
66import { v1 } from "@docker/extension-api-client-types" ;
77import Secrets from '../../Secrets' ;
8+ import { config } from 'process' ;
89
910interface ToolCatalogProps {
1011 search : string ;
@@ -17,34 +18,40 @@ interface ToolCatalogProps {
1718 onSecretChange : ( secret : { name : string , value : string } ) => Promise < void > ;
1819 secrets : Secrets . Secret [ ] ;
1920 registryItems : { [ key : string ] : { ref : string , config : any } } ;
21+ setConfiguringItem : ( item : CatalogItemWithName ) => void ;
22+ config : { [ key : string ] : { [ key : string ] : any } } ;
2023}
2124
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 } ) => {
2326 const filteredCatalogItems = catalogItems . filter ( item =>
2427 item . name . toLowerCase ( ) . includes ( search . toLowerCase ( ) )
2528 ) ;
2629
2730 return (
2831 < 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+ } ) }
4855 < Grid2 size = { 12 } >
4956 < Card sx = { { height : '100%' , display : 'flex' , justifyContent : 'center' , alignItems : 'center' } } >
5057 < CardContent >
0 commit comments