From b12aecb5ad5585a2d19c834041f019f04b6fc3c0 Mon Sep 17 00:00:00 2001 From: Shaurya Sharma Date: Wed, 6 Nov 2024 02:10:48 +0530 Subject: [PATCH] Fixed undo redo breaking on setting component properties --- frontend/src/AppBuilder/Widgets/Table/Table.jsx | 5 ++++- .../Widgets/Table/columns/autogenerateColumns.js | 12 ++++++++++-- .../src/AppBuilder/_stores/slices/undoRedoSlice.js | 1 + 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/frontend/src/AppBuilder/Widgets/Table/Table.jsx b/frontend/src/AppBuilder/Widgets/Table/Table.jsx index 8bbe06ffd6..714f2dd640 100644 --- a/frontend/src/AppBuilder/Widgets/Table/Table.jsx +++ b/frontend/src/AppBuilder/Widgets/Table/Table.jsx @@ -139,6 +139,7 @@ export const Table = React.memo( const updatedDataReference = useRef([]); const preSelectRow = useRef(false); const initialPageCountRef = useRef(null); + const isInitialRender = useRef(true); const allAppEvents = useEvents(); // const { events: allAppEvents } = useAppInfo(); const tableEvents = allAppEvents.filter((event) => event.target === 'component' && event.sourceId === id); @@ -577,8 +578,10 @@ export const Table = React.memo( dynamicColumn, setComponentProperty, properties.autogenerateColumns ?? false, - id + id, + isInitialRender.current ); + isInitialRender.current = false; if (useDynamicColumn) { const dynamicColumnHasId = dynamicColumn && dynamicColumn.every((column) => 'id' in column); if (!dynamicColumnHasId) { diff --git a/frontend/src/AppBuilder/Widgets/Table/columns/autogenerateColumns.js b/frontend/src/AppBuilder/Widgets/Table/columns/autogenerateColumns.js index 235205dbb3..e093bdeac5 100644 --- a/frontend/src/AppBuilder/Widgets/Table/columns/autogenerateColumns.js +++ b/frontend/src/AppBuilder/Widgets/Table/columns/autogenerateColumns.js @@ -9,7 +9,8 @@ export default function autogenerateColumns( dynamicColumn = [], setProperty, generateNestedColumns, - id + id, + isInitialRender ) { if (useDynamicColumn) { if (dynamicColumn.length > 0 && dynamicColumn[0].name) { @@ -107,7 +108,14 @@ export default function autogenerateColumns( finalKeys.includes(column?.key || column?.name) ); - setTimeout(() => setProperty(id, 'columns', finalColumns, 'properties'), 10); + setTimeout( + () => + setProperty(id, 'columns', finalColumns, 'properties', undefined, undefined, undefined, { + skipUndoRedo: isInitialRender, + saveAfterAction: true, + }), + 10 + ); } const dataTypeToColumnTypeMapping = { diff --git a/frontend/src/AppBuilder/_stores/slices/undoRedoSlice.js b/frontend/src/AppBuilder/_stores/slices/undoRedoSlice.js index ec8e9bbf58..901baed1f3 100644 --- a/frontend/src/AppBuilder/_stores/slices/undoRedoSlice.js +++ b/frontend/src/AppBuilder/_stores/slices/undoRedoSlice.js @@ -106,6 +106,7 @@ export const createUndoRedoSlice = (set, get) => { componenetPropertiesToUpdate.paramType, componenetPropertiesToUpdate.attr, undefined, + undefined, { skipUndoRedo: true } ); }