diff --git a/app/client/src/reducers/evaluationReducers/treeReducer.ts b/app/client/src/reducers/evaluationReducers/treeReducer.ts index 8a92a99719dc..88be9e94a68a 100644 --- a/app/client/src/reducers/evaluationReducers/treeReducer.ts +++ b/app/client/src/reducers/evaluationReducers/treeReducer.ts @@ -18,7 +18,7 @@ const evaluatedTreeReducer = createImmerReducer(initialState, { }>, ) => { const { dataTree, updates } = action.payload; - if (Object.keys(dataTree).length) { + if (updates.length === 0) { return dataTree; } for (const update of updates) { diff --git a/app/client/src/sagas/EvaluationsSaga.ts b/app/client/src/sagas/EvaluationsSaga.ts index 7cd96d80f5ce..5024eb0a0d0e 100644 --- a/app/client/src/sagas/EvaluationsSaga.ts +++ b/app/client/src/sagas/EvaluationsSaga.ts @@ -43,6 +43,7 @@ import { } from "./PostEvaluationSagas"; import { getAppMode } from "selectors/applicationSelectors"; import { APP_MODE } from "entities/App"; +import { diff } from "deep-diff"; let widgetTypeConfigMap: WidgetTypeConfigMap; @@ -71,7 +72,6 @@ function* evaluateTreeSaga( evaluationOrder, logs, unEvalUpdates, - updates, } = workerResponse; PerformanceTracker.stopAsyncTracking( PerformanceTransactionName.DATA_TREE_EVALUATION, @@ -79,6 +79,10 @@ function* evaluateTreeSaga( PerformanceTracker.startAsyncTracking( PerformanceTransactionName.SET_EVALUATED_TREE, ); + const oldDataTree = yield select(getDataTree); + + const updates = diff(oldDataTree, dataTree) || []; + yield put(setEvaluatedTree(dataTree, updates)); PerformanceTracker.stopAsyncTracking( PerformanceTransactionName.SET_EVALUATED_TREE, diff --git a/app/client/src/workers/DataTreeEvaluator.ts b/app/client/src/workers/DataTreeEvaluator.ts index 9bac012d9e7c..2231afed5b5a 100644 --- a/app/client/src/workers/DataTreeEvaluator.ts +++ b/app/client/src/workers/DataTreeEvaluator.ts @@ -123,11 +123,9 @@ export default class DataTreeEvaluator { updateDataTree( unEvalTree: DataTree, ): { - updates: Diff[]; evaluationOrder: string[]; unEvalUpdates: DataTreeDiff[]; } { - const oldEvalTree = _.cloneDeep(this.evalTree); const totalStart = performance.now(); // Calculate diff const diffCheckTimeStart = performance.now(); @@ -136,7 +134,6 @@ export default class DataTreeEvaluator { // We want to check if no diffs are present and bail out early if (differences.length === 0) { return { - updates: [], evaluationOrder: [], unEvalUpdates: [], }; @@ -197,8 +194,6 @@ export default class DataTreeEvaluator { const evalTreeDiffsStart = performance.now(); - const evaluationChanges = diff(oldEvalTree, newEvalTree); - const evalTreeDiffsStop = performance.now(); const totalEnd = performance.now(); @@ -220,7 +215,6 @@ export default class DataTreeEvaluator { }; this.logs.push({ timeTakenForSubTreeEval }); return { - updates: evaluationChanges || [], evaluationOrder, unEvalUpdates: translatedDiffs, }; diff --git a/app/client/src/workers/evaluation.worker.ts b/app/client/src/workers/evaluation.worker.ts index 917786c373b5..eb747acfc218 100644 --- a/app/client/src/workers/evaluation.worker.ts +++ b/app/client/src/workers/evaluation.worker.ts @@ -18,7 +18,6 @@ import { validateWidgetProperty, } from "./evaluationUtils"; import DataTreeEvaluator from "workers/DataTreeEvaluator"; -import { Diff } from "deep-diff"; const ctx: Worker = self as any; @@ -51,7 +50,6 @@ ctx.addEventListener( let errors: EvalError[] = []; let logs: any[] = []; let dependencies: DependencyMap = {}; - let updates: Diff[] = []; let evaluationOrder: string[] = []; let unEvalUpdates: DataTreeDiff[] = []; try { @@ -65,9 +63,9 @@ ctx.addEventListener( } else { dataTree = {}; const updateResponse = dataTreeEvaluator.updateDataTree(unevalTree); - updates = JSON.parse(JSON.stringify(updateResponse.updates)); evaluationOrder = updateResponse.evaluationOrder; unEvalUpdates = updateResponse.unEvalUpdates; + dataTree = JSON.parse(JSON.stringify(dataTreeEvaluator.evalTree)); } dependencies = dataTreeEvaluator.inverseDependencyMap; errors = dataTreeEvaluator.errors; @@ -95,7 +93,6 @@ ctx.addEventListener( errors, evaluationOrder, logs, - updates, unEvalUpdates, }; }