From f6665d391e2d21bb9cf370be40926f4e9326c9e3 Mon Sep 17 00:00:00 2001 From: subratadeypappu Date: Fri, 29 Dec 2023 12:57:31 +0600 Subject: [PATCH] chore: add code split for saving last edited time in package (#29930) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit > Pull Request Template > > Use this template to quickly create a well written pull request. Delete all quotes before creating the pull request. > ## Description > Add a TL;DR when description is extra long (helps content team) > > Please include a summary of the changes and which issue has been fixed. Please also include relevant motivation > and context. List any dependencies that are required for this change > > Links to Notion, Figma or any other documents that might be relevant to the PR > > #### PR fixes following issue(s) Fixes # (issue number) > if no issue exists, please create an issue and ask the maintainers about this first > > #### Media > A video or a GIF is preferred. when using Loom, don’t embed because it looks like it’s a GIF. instead, just link to the video > > #### Type of change > Please delete options that are not relevant. - Bug fix (non-breaking change which fixes an issue) - New feature (non-breaking change which adds functionality) - Breaking change (fix or feature that would cause existing functionality to not work as expected) - Chore (housekeeping or task changes that don't impact user perception) - This change requires a documentation update > > > ## Testing > #### How Has This Been Tested? > Please describe the tests that you ran to verify your changes. Also list any relevant details for your test configuration. > Delete anything that is not relevant - [ ] Manual - [ ] JUnit - [ ] Jest - [ ] Cypress > > #### Test Plan > Add Testsmith test cases links that relate to this PR > > #### Issues raised during DP testing > Link issues raised during DP testing for better visiblity and tracking (copy link from comments dropped on this PR) > > > ## Checklist: #### Dev activity - [ ] My code follows the style guidelines of this project - [ ] I have performed a self-review of my own code - [ ] I have commented my code, particularly in hard-to-understand areas - [ ] I have made corresponding changes to the documentation - [ ] My changes generate no new warnings - [ ] I have added tests that prove my fix is effective or that my feature works - [ ] New and existing unit tests pass locally with my changes - [ ] PR is being merged under a feature flag #### QA activity: - [ ] [Speedbreak features](https://github.com/appsmithorg/TestSmith/wiki/Guidelines-for-test-plans#speedbreakers-) have been covered - [ ] Test plan covers all impacted features and [areas of interest](https://github.com/appsmithorg/TestSmith/wiki/Guidelines-for-test-plans#areas-of-interest-) - [ ] Test plan has been peer reviewed by project stakeholders and other QA members - [ ] Manually tested functionality on DP - [ ] We had an implementation alignment call with stakeholders post QA Round 2 - [ ] Cypress test cases have been added and approved by SDET/manual QA - [ ] Added `Test Plan Approved` label after Cypress tests were reviewed - [ ] Added `Test Plan Approved` label after JUnit tests were reviewed ## Summary by CodeRabbit - **New Features** - Introduced tracking of last edit information for action collections and actions within the application. - **Enhancements** - Improved action collection management by automatically saving last edit details. - Enhanced action management with new logic to record last edit information upon changes. - **Bug Fixes** - Ensured that last edit information is consistently updated across different components when modifications are made. --- .../base/ActionCollectionServiceCE.java | 2 ++ .../base/ActionCollectionServiceCEImpl.java | 10 +++++++++- .../server/newactions/base/NewActionServiceCE.java | 2 ++ .../newactions/base/NewActionServiceCEImpl.java | 6 ++++++ .../services/ce/LayoutActionServiceCEImpl.java | 5 ++++- .../services/ce/LayoutCollectionServiceCEImpl.java | 12 +++++++++--- 6 files changed, 32 insertions(+), 5 deletions(-) diff --git a/app/server/appsmith-server/src/main/java/com/appsmith/server/actioncollections/base/ActionCollectionServiceCE.java b/app/server/appsmith-server/src/main/java/com/appsmith/server/actioncollections/base/ActionCollectionServiceCE.java index ebe45d879b..8d3c39b1f0 100644 --- a/app/server/appsmith-server/src/main/java/com/appsmith/server/actioncollections/base/ActionCollectionServiceCE.java +++ b/app/server/appsmith-server/src/main/java/com/appsmith/server/actioncollections/base/ActionCollectionServiceCE.java @@ -78,4 +78,6 @@ public interface ActionCollectionServiceCE extends CrudService validateAndSaveCollection(ActionCollection actionCollection); Mono generateActionCollectionViewDTO(ActionCollection actionCollection); + + Mono saveLastEditInformationInParent(ActionCollectionDTO actionCollectionDTO); } diff --git a/app/server/appsmith-server/src/main/java/com/appsmith/server/actioncollections/base/ActionCollectionServiceCEImpl.java b/app/server/appsmith-server/src/main/java/com/appsmith/server/actioncollections/base/ActionCollectionServiceCEImpl.java index 52c29faa7f..42ce7e7f3c 100644 --- a/app/server/appsmith-server/src/main/java/com/appsmith/server/actioncollections/base/ActionCollectionServiceCEImpl.java +++ b/app/server/appsmith-server/src/main/java/com/appsmith/server/actioncollections/base/ActionCollectionServiceCEImpl.java @@ -408,7 +408,9 @@ public class ActionCollectionServiceCEImpl extends BaseService + saveLastEditInformationInParent(actionCollectionDTO).thenReturn(actionCollectionDTO)); } @Override @@ -789,4 +791,10 @@ public class ActionCollectionServiceCEImpl extends BaseService actionDTO.getDefaultResources().getActionId(), ActionDTO::getId)); collectionDTO.setDefaultToBranchedActionIdsMap(actionIds); } + + @Override + public Mono saveLastEditInformationInParent(ActionCollectionDTO actionCollectionDTO) { + // Do nothing as this is already taken care for JS objects in the context of page + return Mono.empty().then(); + } } diff --git a/app/server/appsmith-server/src/main/java/com/appsmith/server/newactions/base/NewActionServiceCE.java b/app/server/appsmith-server/src/main/java/com/appsmith/server/newactions/base/NewActionServiceCE.java index 81e2c3d6a1..a6e7d5bc7d 100644 --- a/app/server/appsmith-server/src/main/java/com/appsmith/server/newactions/base/NewActionServiceCE.java +++ b/app/server/appsmith-server/src/main/java/com/appsmith/server/newactions/base/NewActionServiceCE.java @@ -157,4 +157,6 @@ public interface NewActionServiceCE extends CrudService { NewAction generateActionDomain(ActionDTO action); void updateDefaultResourcesInAction(NewAction newAction); + + Mono saveLastEditInformationInParent(ActionDTO actionDTO); } diff --git a/app/server/appsmith-server/src/main/java/com/appsmith/server/newactions/base/NewActionServiceCEImpl.java b/app/server/appsmith-server/src/main/java/com/appsmith/server/newactions/base/NewActionServiceCEImpl.java index 3ee9207c27..38569ca4f5 100644 --- a/app/server/appsmith-server/src/main/java/com/appsmith/server/newactions/base/NewActionServiceCEImpl.java +++ b/app/server/appsmith-server/src/main/java/com/appsmith/server/newactions/base/NewActionServiceCEImpl.java @@ -1861,4 +1861,10 @@ public class NewActionServiceCEImpl extends BaseService saveLastEditInformationInParent(ActionDTO actionDTO) { + // Do nothing as this is already taken care for actions in the context of page + return Mono.empty().then(); + } } diff --git a/app/server/appsmith-server/src/main/java/com/appsmith/server/services/ce/LayoutActionServiceCEImpl.java b/app/server/appsmith-server/src/main/java/com/appsmith/server/services/ce/LayoutActionServiceCEImpl.java index f4a5ac8c3a..1479f504ff 100644 --- a/app/server/appsmith-server/src/main/java/com/appsmith/server/services/ce/LayoutActionServiceCEImpl.java +++ b/app/server/appsmith-server/src/main/java/com/appsmith/server/services/ce/LayoutActionServiceCEImpl.java @@ -328,7 +328,10 @@ public class LayoutActionServiceCEImpl implements LayoutActionServiceCE { return newActionService .findByBranchNameAndDefaultActionId(branchName, defaultActionId, actionPermission.getDeletePermission()) .flatMap(branchedAction -> deleteUnpublishedAction(branchedAction.getId())) - .map(responseUtils::updateActionDTOWithDefaultResources); + .map(responseUtils::updateActionDTOWithDefaultResources) + .flatMap(actionDTO -> newActionService + .saveLastEditInformationInParent(actionDTO) + .thenReturn(actionDTO)); } @Override diff --git a/app/server/appsmith-server/src/main/java/com/appsmith/server/services/ce/LayoutCollectionServiceCEImpl.java b/app/server/appsmith-server/src/main/java/com/appsmith/server/services/ce/LayoutCollectionServiceCEImpl.java index 094549eb46..14250f7965 100644 --- a/app/server/appsmith-server/src/main/java/com/appsmith/server/services/ce/LayoutCollectionServiceCEImpl.java +++ b/app/server/appsmith-server/src/main/java/com/appsmith/server/services/ce/LayoutCollectionServiceCEImpl.java @@ -132,7 +132,10 @@ public class LayoutCollectionServiceCEImpl implements LayoutCollectionServiceCE } return validateAndCreateActionCollectionDomain(collectionDTO, branchName) - .flatMap(actionCollection -> createCollection(actionCollection)) + .flatMap(actionCollection -> createCollection(actionCollection) + .flatMap(actionCollectionDTO -> actionCollectionService + .saveLastEditInformationInParent(actionCollectionDTO) + .thenReturn(actionCollectionDTO))) .map(actionCollectionDTO -> responseUtils.updateCollectionDTOWithDefaultResources(actionCollectionDTO)); } @@ -501,8 +504,11 @@ public class LayoutCollectionServiceCEImpl implements LayoutCollectionServiceCE savedActionCollection, actionCollectionService.getAnalyticsProperties(savedActionCollection))) .flatMap(actionCollection -> actionCollectionService .generateActionCollectionByViewMode(actionCollection, false) - .flatMap(actionCollectionDTO1 -> actionCollectionService.populateActionCollectionByViewMode( - actionCollection.getUnpublishedCollection(), false))) + .flatMap(actionCollectionDTO1 -> actionCollectionService + .populateActionCollectionByViewMode(actionCollection.getUnpublishedCollection(), false) + .flatMap(actionCollectionDTO2 -> actionCollectionService + .saveLastEditInformationInParent(actionCollectionDTO2) + .thenReturn(actionCollectionDTO2)))) .map(responseUtils::updateCollectionDTOWithDefaultResources) .flatMap(branchedActionCollection -> sendErrorReportsFromPageToCollection(branchedActionCollection)); }