Merge branch 'fix/recursive-dynamic-binding-resolution' into 'release'

Recursive dynamic binding resolution

Fixes: #299 

See merge request theappsmith/internal-tools-client!207
This commit is contained in:
Hetu Nandu 2019-12-30 07:39:53 +00:00
commit a7529e78d3
2 changed files with 21 additions and 1 deletions

View File

@ -18,6 +18,7 @@ module.exports = {
"@typescript-eslint/explicit-function-return-type": 0,
"@typescript-eslint/no-explicit-any": 0,
"react-hooks/rules-of-hooks": "error",
"@typescript-eslint/no-use-before-define": 0,
},
settings: {
react: {

View File

@ -117,7 +117,26 @@ export const getDynamicValue = (
if (bindings.length) {
// Get the Data Tree value of those "binding "paths
const values = paths.map((p, i) => {
return p ? evaluateDynamicBoundValue(data, p) : bindings[i];
if (p) {
const value = evaluateDynamicBoundValue(data, p);
// Check if the result is a dynamic value, if so get the value again
if (isDynamicValue(value)) {
// Check for the paths of this dynamic value
const { paths } = getDynamicBindings(value);
// If it is the same as it came in, log an error
// and return the same value back
if (paths.length === 1 && paths[0] === p) {
console.error("Binding not correct");
return value;
}
// Evaluate the value again
return getDynamicValue(value, data);
} else {
return value;
}
} else {
return bindings[i];
}
});
// if it is just one binding, no need to create template string