Skip to content

Commit 350cb98

Browse files
committed
Save only the parameters with non-default values
Signed-off-by: David Gageot <[email protected]>
1 parent cfff1c0 commit 350cb98

File tree

2 files changed

+18
-15
lines changed

2 files changed

+18
-15
lines changed

src/extension/ui/src/Registry.ts

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import { ParsedParameters } from "./types/config";
77

88
export const getRegistry = async (client: v1.DockerDesktopClient) => {
99
const parseRegistry = async () => {
10-
const registry = await readFileInPromptsVolume(client, 'registry.yaml')
10+
const registry = await readFileInPromptsVolume(client, REGISTRY_YAML)
1111
if (registry) {
1212
const value = parse(registry)['registry'] as { [key: string]: { ref: string, config: any } }
1313
if (!value) {
@@ -18,7 +18,7 @@ export const getRegistry = async (client: v1.DockerDesktopClient) => {
1818
return {};
1919
}
2020
const writeRegistryIfNotExists = async () => {
21-
const registry = await readFileInPromptsVolume(client, 'registry.yaml')
21+
const registry = await readFileInPromptsVolume(client, REGISTRY_YAML)
2222
if (!registry) {
2323
await writeToPromptsVolume(client, REGISTRY_YAML, 'registry: {}')
2424
}
@@ -95,12 +95,7 @@ export const syncRegistryWithConfig = async (client: v1.DockerDesktopClient, reg
9595
}
9696
const oldRegString = JSON.stringify(registry)
9797
for (const [itemName, itemConfig] of Object.entries(config)) {
98-
const registryItem = registry[itemName]
99-
if (registryItem && registryItem.config?.[itemName]) {
100-
const mergedConfig = mergeDeep(registryItem.config[itemName] || {}, itemConfig)
101-
registry[itemName].config = { [itemName]: mergedConfig }
102-
}
103-
else if (registryItem) {
98+
if (registry[itemName]) {
10499
registry[itemName].config = { [itemName]: itemConfig }
105100
}
106101
}

src/extension/ui/src/components/tile/ConfigEditor.tsx

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import {
1111
import * as JsonSchema from 'json-schema-library';
1212
import { useEffect, useMemo, useState } from 'react';
1313

14+
import * as JsonSchemaLibrary from "json-schema-library";
1415
import {
1516
buildObjectFromFlattenedObject,
1617
deepFlattenObject,
@@ -100,7 +101,7 @@ const ConfigEditor = ({
100101
fullWidth
101102
size="small"
102103
label={key}
103-
value={localConfig[key] || ''}
104+
value={localConfig[key]}
104105
onChange={(e) =>
105106
setLocalConfig({ ...localConfig, [key]: e.target.value })
106107
}
@@ -114,12 +115,19 @@ const ConfigEditor = ({
114115
<Stack direction="row" spacing={1}>
115116
<IconButton
116117
size="small"
117-
onClick={() =>
118-
updateExistingConfig(
119-
catalogItem.name,
120-
buildObjectFromFlattenedObject(localConfig)
121-
)
122-
}
118+
onClick={() => {
119+
const newConfig = buildObjectFromFlattenedObject(localConfig);
120+
121+
// Remove all attributes which are optional and which have the defautl value
122+
const schema = new JsonSchemaLibrary.Draft2019(catalogItem.config[0]);
123+
const requiredAttributes = (schema.rootSchema.required || []) as string[];
124+
const template = schema.getTemplate({});
125+
const requiredConfig = Object.fromEntries(Object.entries(newConfig).filter(([key, value]) => {
126+
return requiredAttributes.includes(key) || (value !== template[key]);
127+
}));
128+
129+
updateExistingConfig(catalogItem.name, requiredConfig)
130+
}}
123131
disabled={isSaving}
124132
>
125133
<CheckOutlined

0 commit comments

Comments
 (0)