diff --git a/frontend/src/Editor/EditorFunc.jsx b/frontend/src/Editor/EditorFunc.jsx index 136fc30e98..ca7aa92979 100644 --- a/frontend/src/Editor/EditorFunc.jsx +++ b/frontend/src/Editor/EditorFunc.jsx @@ -93,7 +93,7 @@ const EditorComponent = (props) => { const { socket } = createWebsocketConnection(props?.params?.id); const mounted = useMounted(); - const { updateState } = useAppDataActions(); + const { updateState, updateAppDefinitionDiff } = useAppDataActions(); const { updateEditorState, updateQueryConfirmationList } = useEditorActions(); const { noOfVersionsSupported, @@ -115,7 +115,7 @@ const EditorComponent = (props) => { const dataQueries = useDataQueries(); - const { isMaintenanceOn, appId, app, currentUser, currentVersionId } = useAppInfo(); + const { isMaintenanceOn, appId, app, currentUser, currentVersionId, appDefinitionDiff } = useAppInfo(); const [currentVersionChanges, setCurrentVersionChanges] = useState({}); const [currentPageId, setCurrentPageId] = useState(null); @@ -722,16 +722,20 @@ const EditorComponent = (props) => { updatedAppDefinition.pages[currentPageId].components = currentPageComponents; const diffPatches = diff(appDefinition, updatedAppDefinition); + const shouldUpdate = !_.isEmpty(diffPatches) && !isEqual(appDefinitionDiff, diffPatches); - console.log('--arpit | appDefinitionChanged func() | diffPatches', { - diffPatches, - }); + // console.log('--arpit | appDefinitionChanged func() | diffPatches', { + // diffPatches, + // appDefinitionDiff, + // shouldUpdate, + // }); - if (!_.isEmpty(diffPatches)) { + if (shouldUpdate) { updateEditorState({ isSaving: true, appDefinition: updatedAppDefinition, }); + updateAppDefinitionDiff(diffPatches); computeComponentState(updatedAppDefinition.pages[currentPageId]?.components); } @@ -890,7 +894,6 @@ const EditorComponent = (props) => { const diffPatches = diff(appDefinition, updatedAppDefinition); if (!isEmpty(diffPatches)) { - // handleAddPatch(diffPatches, diff(updatedAppDefinition, appDefinition)); appDefinitionChanged(updatedAppDefinition, { skipAutoSave: true, componentDefinitionChanged: true }); } } diff --git a/frontend/src/_stores/appDataStore.js b/frontend/src/_stores/appDataStore.js index aac92a9be1..5fa8a424ab 100644 --- a/frontend/src/_stores/appDataStore.js +++ b/frontend/src/_stores/appDataStore.js @@ -18,6 +18,7 @@ const initialState = { pages: [], layouts: [], eventHandlers: [], + appDefinitionDiff: null, }; export const useAppDataStore = create( @@ -28,6 +29,7 @@ export const useAppDataStore = create( updateEditingVersion: (version) => set(() => ({ editingVersion: version })), updateApps: (apps) => set(() => ({ apps: apps })), updateState: (state) => set((prev) => ({ ...prev, ...state })), + updateAppDefinitionDiff: (appDefinitionDiff) => set(() => ({ appDefinitionDiff: appDefinitionDiff })), }, }), { name: 'App Data Store' }