diff --git a/app/server/appsmith-server/src/main/java/com/appsmith/server/domains/Application.java b/app/server/appsmith-server/src/main/java/com/appsmith/server/domains/Application.java index b37eb57fa7..5537e7ea58 100644 --- a/app/server/appsmith-server/src/main/java/com/appsmith/server/domains/Application.java +++ b/app/server/appsmith-server/src/main/java/com/appsmith/server/domains/Application.java @@ -114,6 +114,11 @@ public class Application extends BaseDomain { NavigationSetting publishedNavigationSetting; + @JsonIgnore + AppPositioning publishedAppPositioning; + + @JsonIgnore + AppPositioning unpublishedAppPositioning; /** * Earlier this was returning value of the updatedAt property in the base domain. @@ -179,6 +184,8 @@ public class Application extends BaseDomain { this.icon = application.getIcon(); this.unpublishedAppLayout = application.getUnpublishedAppLayout() == null ? null : new AppLayout(application.getUnpublishedAppLayout().type); this.publishedAppLayout = application.getPublishedAppLayout() == null ? null : new AppLayout(application.getPublishedAppLayout().type); + this.unpublishedAppPositioning = application.getUnpublishedAppPositioning() == null ? null : new AppPositioning(application.getUnpublishedAppPositioning().type); + this.publishedAppPositioning = application.getPublishedAppPositioning() == null ? null : new AppPositioning(application.getPublishedAppPositioning().type); this.unpublishedCustomJSLibs = application.getUnpublishedCustomJSLibs(); } @@ -281,4 +288,36 @@ public class Application extends BaseDomain { private Boolean showShareApp; } + public AppPositioning getAppPositioning() { + return Boolean.TRUE.equals(viewMode) ? publishedAppPositioning : unpublishedAppPositioning; + } + + public void setAppPositioning(AppPositioning appPositioning) { + if (Boolean.TRUE.equals(viewMode)) { + publishedAppPositioning = appPositioning; + } else { + unpublishedAppPositioning = appPositioning; + } + } + + /** + * AppPositioning captures widget positioning Mode of the application + */ + @Data + @NoArgsConstructor + public static class AppPositioning { + Type type; + + public AppPositioning(Type type) { + this.type = type; + } + + public enum Type { + FIXED, + AUTO + } + + } + + } diff --git a/app/server/appsmith-server/src/main/java/com/appsmith/server/services/ce/ApplicationPageServiceCEImpl.java b/app/server/appsmith-server/src/main/java/com/appsmith/server/services/ce/ApplicationPageServiceCEImpl.java index c80f8c4070..08c36484d3 100644 --- a/app/server/appsmith-server/src/main/java/com/appsmith/server/services/ce/ApplicationPageServiceCEImpl.java +++ b/app/server/appsmith-server/src/main/java/com/appsmith/server/services/ce/ApplicationPageServiceCEImpl.java @@ -1011,6 +1011,7 @@ public class ApplicationPageServiceCEImpl implements ApplicationPageServiceCE { application.setPublishedPages(pages); application.setPublishedAppLayout(application.getUnpublishedAppLayout()); + application.setPublishedAppPositioning(application.getUnpublishedAppPositioning()); if (isPublishedManually) { application.setLastDeployedAt(Instant.now()); } diff --git a/app/server/appsmith-server/src/test/java/com/appsmith/server/services/ce/ApplicationServiceCETest.java b/app/server/appsmith-server/src/test/java/com/appsmith/server/services/ce/ApplicationServiceCETest.java index 10793194f7..d74b94ab84 100644 --- a/app/server/appsmith-server/src/test/java/com/appsmith/server/services/ce/ApplicationServiceCETest.java +++ b/app/server/appsmith-server/src/test/java/com/appsmith/server/services/ce/ApplicationServiceCETest.java @@ -2210,6 +2210,7 @@ public class ApplicationServiceCETest { String appName = "ApplicationServiceTest Publish Application"; testApplication.setName(appName); testApplication.setAppLayout(new Application.AppLayout(Application.AppLayout.Type.DESKTOP)); + testApplication.setAppPositioning(new Application.AppPositioning(Application.AppPositioning.Type.FIXED)); Mono applicationMono = applicationPageService.createApplication(testApplication, workspaceId) .flatMap(application -> applicationPageService.publish(application.getId(), true)) .then(applicationService.findByName(appName, MANAGE_APPLICATIONS)) @@ -2241,6 +2242,7 @@ public class ApplicationServiceCETest { assertThat(newPage.getUnpublishedPage().getLayouts().get(0).getDsl()).isEqualTo(newPage.getPublishedPage().getLayouts().get(0).getDsl()); assertThat(application.getPublishedAppLayout()).isEqualTo(application.getUnpublishedAppLayout()); + assertThat(application.getPublishedAppPositioning()).isEqualTo(application.getUnpublishedAppPositioning()); }) .verifyComplete(); } @@ -2264,6 +2266,7 @@ public class ApplicationServiceCETest { String appName = "Publish Application With Archived Page"; testApplication.setName(appName); testApplication.setAppLayout(new Application.AppLayout(Application.AppLayout.Type.DESKTOP)); + testApplication.setAppPositioning(new Application.AppPositioning(Application.AppPositioning.Type.FIXED)); Mono> resultMono = applicationPageService.createApplication(testApplication, workspaceId) .flatMap(application -> { PageDTO page = new PageDTO(); @@ -2364,6 +2367,7 @@ public class ApplicationServiceCETest { public void publishApplication_withGitConnectedApp_success() { GitApplicationMetadata gitData = gitConnectedApp.getGitApplicationMetadata(); gitConnectedApp.setAppLayout(new Application.AppLayout(Application.AppLayout.Type.DESKTOP)); + gitConnectedApp.setAppPositioning(new Application.AppPositioning(Application.AppPositioning.Type.FIXED)); Mono applicationMono = applicationService.update(gitConnectedApp.getId(), gitConnectedApp) .flatMap(updatedApp -> applicationPageService.publish(updatedApp.getId(), gitData.getBranchName(), true)) @@ -2394,6 +2398,7 @@ public class ApplicationServiceCETest { assertThat(newPage.getDefaultResources()).isNotNull(); assertThat(application.getPublishedAppLayout()).isEqualTo(application.getUnpublishedAppLayout()); + assertThat(application.getPublishedAppPositioning()).isEqualTo(application.getUnpublishedAppPositioning()); }) .verifyComplete(); }