From c98bbbe6aef3ecc4e5fcae5bb1982f1d80e06401 Mon Sep 17 00:00:00 2001 From: Favour Ohanekwu Date: Wed, 24 Nov 2021 05:43:50 +0100 Subject: [PATCH] fix: properly update dependency map (#9169) Properly update dependency map --- app/client/src/workers/DataTreeEvaluator.ts | 33 +++++++++++---------- app/client/src/workers/evaluation.test.ts | 8 ++--- 2 files changed, 22 insertions(+), 19 deletions(-) diff --git a/app/client/src/workers/DataTreeEvaluator.ts b/app/client/src/workers/DataTreeEvaluator.ts index f0e50aff7b..df6f8ecca0 100644 --- a/app/client/src/workers/DataTreeEvaluator.ts +++ b/app/client/src/workers/DataTreeEvaluator.ts @@ -450,21 +450,7 @@ export default class DataTreeEvaluator { entityName: string, ): DependencyMap { const dependencies: DependencyMap = {}; - if (isAction(entity) || isWidget(entity)) { - const dynamicBindingPathList = getEntityDynamicBindingPathList(entity); - if (dynamicBindingPathList.length) { - dynamicBindingPathList.forEach((dynamicPath) => { - const propertyPath = dynamicPath.key; - const unevalPropValue = _.get(entity, propertyPath); - const { jsSnippets } = getDynamicBindings(unevalPropValue); - const existingDeps = - dependencies[`${entityName}.${propertyPath}`] || []; - dependencies[`${entityName}.${propertyPath}`] = existingDeps.concat( - jsSnippets.filter((jsSnippet) => !!jsSnippet), - ); - }); - } - } + if (isWidget(entity)) { // Make property dependant on the default property as any time the default changes // the property needs to change @@ -518,6 +504,23 @@ export default class DataTreeEvaluator { }); } } + + if (isAction(entity) || isWidget(entity)) { + const dynamicBindingPathList = getEntityDynamicBindingPathList(entity); + if (dynamicBindingPathList.length) { + dynamicBindingPathList.forEach((dynamicPath) => { + const propertyPath = dynamicPath.key; + const unevalPropValue = _.get(entity, propertyPath); + const { jsSnippets } = getDynamicBindings(unevalPropValue); + const existingDeps = + dependencies[`${entityName}.${propertyPath}`] || []; + dependencies[`${entityName}.${propertyPath}`] = existingDeps.concat( + jsSnippets.filter((jsSnippet) => !!jsSnippet), + ); + }); + } + } + return dependencies; } diff --git a/app/client/src/workers/evaluation.test.ts b/app/client/src/workers/evaluation.test.ts index 043a4d49fa..786fe8541b 100644 --- a/app/client/src/workers/evaluation.test.ts +++ b/app/client/src/workers/evaluation.test.ts @@ -356,16 +356,16 @@ describe("DataTreeEvaluator", () => { Text2: ["Text2.text"], Text3: ["Text3.text"], Text4: ["Text4.text"], - Table1: [ + Table1: expect.arrayContaining([ "Table1.tableData", "Table1.searchText", "Table1.selectedRowIndex", "Table1.selectedRowIndices", - ], - Dropdown1: [ + ]), + Dropdown1: expect.arrayContaining([ "Dropdown1.selectedOptionValue", "Dropdown1.selectedOptionValueArr", - ], + ]), "Text2.text": ["Text1.text"], "Text3.text": ["Text1.text"], "Dropdown1.selectedOptionValue": [],