11import { v1 } from '@docker/extension-api-client-types' ;
22import { useMutation , useQuery , useQueryClient } from '@tanstack/react-query' ;
3+ import { isEmpty , isEqual } from 'lodash-es' ;
34import { useCallback , useEffect , useMemo , useState } from 'react' ;
45import { parse , stringify } from 'yaml' ;
6+
57import { CATALOG_URL , REGISTRY_YAML } from '../Constants' ;
68import { getRegistry , syncRegistryWithConfig } from '../Registry' ;
79import Secrets from '../Secrets' ;
810import { CatalogItemRichened , CatalogItemWithName } from '../types/catalog' ;
911import { writeToPromptsVolume } from '../utils/Files' ;
10- import { getTemplateForItem , useConfig } from './useConfig' ;
12+ import {
13+ getRequiredParameters ,
14+ getTemplateForItem ,
15+ useConfig ,
16+ } from './useConfig' ;
1117import { useSecrets } from './useSecrets' ;
1218
1319const STORAGE_KEYS = {
@@ -33,11 +39,18 @@ function useCatalog(client: v1.DockerDesktopClient) {
3339 ) ;
3440 const configTemplate = getTemplateForItem ( item , itemConfigValue ) ;
3541 const baseConfigTemplate = getTemplateForItem ( item , { } ) ;
36- const unConfigured =
37- Boolean ( item . config ) &&
38- ( neverOnceConfigured ||
39- JSON . stringify ( itemConfigValue ) ===
40- JSON . stringify ( baseConfigTemplate ) ) ;
42+ const requiredParameters = getRequiredParameters ( item ) ;
43+
44+ // Check if any required parameters are not configured
45+ const missingConfig =
46+ ! isEmpty ( item . config ) &&
47+ requiredParameters . some ( ( key ) => {
48+ const isMissing = isEqual (
49+ itemConfigValue [ key ] ,
50+ baseConfigTemplate [ key ] ,
51+ ) ;
52+ return isMissing ;
53+ } ) ;
4154
4255 const missingASecret = secretsWithAssignment . some (
4356 ( secret ) => ! secret . assigned ,
@@ -48,10 +61,10 @@ function useCatalog(client: v1.DockerDesktopClient) {
4861 configValue : itemConfigValue ,
4962 configSchema : item . config || { } ,
5063 configTemplate,
51- missingConfig : unConfigured ,
64+ missingConfig,
5265 missingSecrets : missingASecret ,
5366 registered : ! ! registryItems ?. [ item . name ] ,
54- canRegister : ! missingASecret && ! unConfigured ,
67+ canRegister : ! missingASecret && ! missingConfig ,
5568 name : item . name ,
5669 } ;
5770 return enrichedItem ;
0 commit comments