Compare commits

...

1 Commits

Author SHA1 Message Date
Henry 408da947f6 Bugfix/Enhance input configuration merging logic in replaceInputsWithConfig
Improve the handling of input configurations by merging existing values with overrides instead of complete replacement. This includes support for merging objects and parsing JSON strings when necessary.
2025-06-25 22:07:27 +01:00
1 changed files with 27 additions and 1 deletions

View File

@ -1149,7 +1149,33 @@ export const replaceInputsWithConfig = (
if (nodeIds.includes(flowNodeData.id)) {
// Check if this parameter is enabled
if (isParameterEnabled(flowNodeData.label, config)) {
inputsObj[config] = overrideConfig[config][flowNodeData.id]
const existingValue = inputsObj[config]
const overrideValue = overrideConfig[config][flowNodeData.id]
// Merge objects instead of completely overriding
if (
typeof existingValue === 'object' &&
typeof overrideValue === 'object' &&
!Array.isArray(existingValue) &&
!Array.isArray(overrideValue) &&
existingValue !== null &&
overrideValue !== null
) {
inputsObj[config] = Object.assign({}, existingValue, overrideValue)
} else if (typeof existingValue === 'string' && existingValue.startsWith('{') && existingValue.endsWith('}')) {
try {
const parsedExisting = JSON.parse(existingValue)
if (typeof overrideValue === 'object' && !Array.isArray(overrideValue)) {
inputsObj[config] = Object.assign({}, parsedExisting, overrideValue)
} else {
inputsObj[config] = overrideValue
}
} catch (e) {
inputsObj[config] = overrideValue
}
} else {
inputsObj[config] = overrideValue
}
}
continue
} else if (nodeIds.some((nodeId) => nodeId.includes(flowNodeData.name))) {