1
1
import { v1 } from '@docker/extension-api-client-types' ;
2
2
import { useMutation , useQuery , useQueryClient } from '@tanstack/react-query' ;
3
+ import { isEmpty , isEqual } from 'lodash-es' ;
3
4
import { useCallback , useEffect , useMemo , useState } from 'react' ;
4
5
import { parse , stringify } from 'yaml' ;
6
+
5
7
import { CATALOG_URL , REGISTRY_YAML } from '../Constants' ;
6
8
import { getRegistry , syncRegistryWithConfig } from '../Registry' ;
7
9
import Secrets from '../Secrets' ;
8
10
import { CatalogItemRichened , CatalogItemWithName } from '../types/catalog' ;
9
11
import { writeToPromptsVolume } from '../utils/Files' ;
10
- import { getTemplateForItem , useConfig } from './useConfig' ;
12
+ import {
13
+ getRequiredParameters ,
14
+ getTemplateForItem ,
15
+ useConfig ,
16
+ } from './useConfig' ;
11
17
import { useSecrets } from './useSecrets' ;
12
18
13
19
const STORAGE_KEYS = {
@@ -33,11 +39,18 @@ function useCatalog(client: v1.DockerDesktopClient) {
33
39
) ;
34
40
const configTemplate = getTemplateForItem ( item , itemConfigValue ) ;
35
41
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
+ } ) ;
41
54
42
55
const missingASecret = secretsWithAssignment . some (
43
56
( secret ) => ! secret . assigned ,
@@ -48,10 +61,10 @@ function useCatalog(client: v1.DockerDesktopClient) {
48
61
configValue : itemConfigValue ,
49
62
configSchema : item . config || { } ,
50
63
configTemplate,
51
- missingConfig : unConfigured ,
64
+ missingConfig,
52
65
missingSecrets : missingASecret ,
53
66
registered : ! ! registryItems ?. [ item . name ] ,
54
- canRegister : ! missingASecret && ! unConfigured ,
67
+ canRegister : ! missingASecret && ! missingConfig ,
55
68
name : item . name ,
56
69
} ;
57
70
return enrichedItem ;
0 commit comments