diff --git a/app/client/src/pages/AppViewer/index.tsx b/app/client/src/pages/AppViewer/index.tsx index ee11d39ef4..030d7a0397 100644 --- a/app/client/src/pages/AppViewer/index.tsx +++ b/app/client/src/pages/AppViewer/index.tsx @@ -19,7 +19,7 @@ import * as Sentry from "@sentry/react"; import { getCurrentPageDescription, getIsAutoLayout, - getViewModePageList, + getPageList, } from "selectors/editorSelectors"; import { getThemeDetails, ThemeMode } from "selectors/themeSelectors"; import { getSearchQuery } from "utils/helpers"; @@ -88,7 +88,7 @@ function AppViewer(props: Props) { const { pathname, search } = props.location; const { baseApplicationId, basePageId } = props.match.params; const isInitialized = useSelector(getIsInitialized); - const pages = useSelector(getViewModePageList); + const pages = useSelector(getPageList); const selectedTheme = useSelector(getSelectedAppTheme); const lightTheme = useSelector((state: AppState) => getThemeDetails(state, ThemeMode.LIGHT), diff --git a/app/server/appsmith-server/src/main/java/com/appsmith/server/migrations/JsonSchemaMigration.java b/app/server/appsmith-server/src/main/java/com/appsmith/server/migrations/JsonSchemaMigration.java index 851b3173b6..047c037e6c 100644 --- a/app/server/appsmith-server/src/main/java/com/appsmith/server/migrations/JsonSchemaMigration.java +++ b/app/server/appsmith-server/src/main/java/com/appsmith/server/migrations/JsonSchemaMigration.java @@ -144,6 +144,10 @@ public class JsonSchemaMigration { case 6: MigrationHelperMethods.ensureXmlParserPresenceInCustomJsLibList(applicationJson); applicationJson.setServerSchemaVersion(7); + case 7: + case 8: + MigrationHelperMethods.migrateThemeSettingsForAnvil(applicationJson); + applicationJson.setServerSchemaVersion(9); default: // Unable to detect the serverSchema } diff --git a/app/server/appsmith-server/src/main/java/com/appsmith/server/migrations/JsonSchemaVersions.java b/app/server/appsmith-server/src/main/java/com/appsmith/server/migrations/JsonSchemaVersions.java index 18365ebda3..90ad2a2a3b 100644 --- a/app/server/appsmith-server/src/main/java/com/appsmith/server/migrations/JsonSchemaVersions.java +++ b/app/server/appsmith-server/src/main/java/com/appsmith/server/migrations/JsonSchemaVersions.java @@ -1,7 +1,5 @@ package com.appsmith.server.migrations; -import com.appsmith.external.annotations.FeatureFlagged; -import com.appsmith.external.enums.FeatureFlagEnum; import org.springframework.stereotype.Component; /** @@ -20,8 +18,7 @@ public class JsonSchemaVersions extends JsonSchemaVersionsFallback { * @return an Integer which is server version */ @Override - @FeatureFlagged(featureFlagName = FeatureFlagEnum.release_git_autocommit_feature_enabled) public Integer getServerVersion() { - return super.getServerVersion() + 1; + return super.getServerVersion(); } } diff --git a/app/server/appsmith-server/src/main/java/com/appsmith/server/migrations/JsonSchemaVersionsFallback.java b/app/server/appsmith-server/src/main/java/com/appsmith/server/migrations/JsonSchemaVersionsFallback.java index ac8f0fe579..63b6c7e7d4 100644 --- a/app/server/appsmith-server/src/main/java/com/appsmith/server/migrations/JsonSchemaVersionsFallback.java +++ b/app/server/appsmith-server/src/main/java/com/appsmith/server/migrations/JsonSchemaVersionsFallback.java @@ -4,7 +4,7 @@ import org.springframework.stereotype.Component; @Component public class JsonSchemaVersionsFallback { - private static final Integer serverVersion = 7; + private static final Integer serverVersion = 9; public static final Integer clientVersion = 1; public Integer getServerVersion() { diff --git a/app/server/appsmith-server/src/main/java/com/appsmith/server/migrations/MigrationHelperMethods.java b/app/server/appsmith-server/src/main/java/com/appsmith/server/migrations/MigrationHelperMethods.java index c4592830a8..cf18759a86 100644 --- a/app/server/appsmith-server/src/main/java/com/appsmith/server/migrations/MigrationHelperMethods.java +++ b/app/server/appsmith-server/src/main/java/com/appsmith/server/migrations/MigrationHelperMethods.java @@ -7,6 +7,8 @@ import com.appsmith.external.models.InvisibleActionFields; import com.appsmith.external.models.Property; import com.appsmith.server.constants.ApplicationConstants; import com.appsmith.server.constants.ResourceModes; +import com.appsmith.server.domains.Application; +import com.appsmith.server.domains.ApplicationDetail; import com.appsmith.server.domains.ApplicationPage; import com.appsmith.server.domains.CustomJSLib; import com.appsmith.server.domains.NewAction; @@ -1181,4 +1183,52 @@ public class MigrationHelperMethods { } return pathsToRemove; } + + public static void migrateThemeSettingsForAnvil(ApplicationJson applicationJson) { + if (applicationJson == null || applicationJson.getExportedApplication() == null) { + return; + } + + Application exportedApplication = applicationJson.getExportedApplication(); + ApplicationDetail applicationDetail = exportedApplication.getApplicationDetail(); + ApplicationDetail unpublishedApplicationDetail = exportedApplication.getUnpublishedApplicationDetail(); + + if (applicationDetail == null) { + applicationDetail = new ApplicationDetail(); + exportedApplication.setApplicationDetail(applicationDetail); + } + + if (unpublishedApplicationDetail == null) { + unpublishedApplicationDetail = new ApplicationDetail(); + exportedApplication.setUnpublishedApplicationDetail(unpublishedApplicationDetail); + } + + Application.ThemeSetting themeSetting = applicationDetail.getThemeSetting(); + Application.ThemeSetting unpublishedThemeSetting = unpublishedApplicationDetail.getThemeSetting(); + if (themeSetting == null) { + themeSetting = new Application.ThemeSetting(); + } + + if (unpublishedThemeSetting == null) { + unpublishedThemeSetting = new Application.ThemeSetting(); + } + + applicationDetail.setThemeSetting(themeSetting); + unpublishedApplicationDetail.setThemeSetting(unpublishedThemeSetting); + } + + public static void setThemeSettings(Application.ThemeSetting themeSetting) { + if (themeSetting.getAppMaxWidth() == null) { + themeSetting.setAppMaxWidth(Application.ThemeSetting.AppMaxWidth.LARGE); + } + + // since these are primitive values we don't have concept of null, hence putting it to the default of 1. + if (themeSetting.getDensity() == 0) { + themeSetting.setDensity(1); + } + + if (themeSetting.getSizing() == 0) { + themeSetting.setSizing(1); + } + } } diff --git a/app/server/appsmith-server/src/main/java/com/appsmith/server/newactions/clonepage/ActionClonePageServiceCEImpl.java b/app/server/appsmith-server/src/main/java/com/appsmith/server/newactions/clonepage/ActionClonePageServiceCEImpl.java index b609d992c3..e8b71a4264 100644 --- a/app/server/appsmith-server/src/main/java/com/appsmith/server/newactions/clonepage/ActionClonePageServiceCEImpl.java +++ b/app/server/appsmith-server/src/main/java/com/appsmith/server/newactions/clonepage/ActionClonePageServiceCEImpl.java @@ -12,6 +12,7 @@ import com.appsmith.server.services.LayoutActionService; import com.appsmith.server.solutions.ActionPermission; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import org.springframework.util.StringUtils; import reactor.core.publisher.Flux; import reactor.core.publisher.Mono; @@ -33,6 +34,14 @@ public class ActionClonePageServiceCEImpl implements ClonePageServiceCE { assertThat(application.getWorkspaceId()).isNotNull(); - assertThat(application.getUnpublishedApplicationDetail()).isNull(); - assertThat(application.getPublishedApplicationDetail()).isNull(); }) .verifyComplete(); } diff --git a/app/server/appsmith-server/src/test/java/com/appsmith/server/migrations/JsonSchemaMigrationTest.java b/app/server/appsmith-server/src/test/java/com/appsmith/server/migrations/JsonSchemaMigrationTest.java index 1bd93c36e2..d31c18fcdc 100644 --- a/app/server/appsmith-server/src/test/java/com/appsmith/server/migrations/JsonSchemaMigrationTest.java +++ b/app/server/appsmith-server/src/test/java/com/appsmith/server/migrations/JsonSchemaMigrationTest.java @@ -78,9 +78,6 @@ public class JsonSchemaMigrationTest { gitFileSystemTestHelper.getApplicationJson(this.getClass().getResource("application.json")); ArtifactExchangeJson artifactExchangeJson = jsonSchemaMigration.migrateArtifactToLatestSchema(applicationJson); - - assertThat(artifactExchangeJson.getServerSchemaVersion()) - .isNotEqualTo(jsonSchemaVersionsFallback.getServerVersion()); assertThat(artifactExchangeJson.getServerSchemaVersion()).isEqualTo(jsonSchemaVersions.getServerVersion()); assertThat(artifactExchangeJson.getClientSchemaVersion()).isEqualTo(jsonSchemaVersions.getClientVersion()); assertThat(artifactExchangeJson.getClientSchemaVersion()) @@ -103,8 +100,6 @@ public class JsonSchemaMigrationTest { jsonSchemaMigration.migrateApplicationJsonToLatestSchema(applicationJson); StepVerifier.create(applicationJsonMono) .assertNext(appJson -> { - assertThat(appJson.getServerSchemaVersion()) - .isNotEqualTo(jsonSchemaVersionsFallback.getServerVersion()); assertThat(appJson.getServerSchemaVersion()).isEqualTo(jsonSchemaVersions.getServerVersion()); assertThat(appJson.getClientSchemaVersion()).isEqualTo(jsonSchemaVersions.getClientVersion()); assertThat(appJson.getClientSchemaVersion()) diff --git a/app/server/appsmith-server/src/test/java/com/appsmith/server/migrations/JsonSchemaVersionsTest.java b/app/server/appsmith-server/src/test/java/com/appsmith/server/migrations/JsonSchemaVersionsTest.java index 358d86c7aa..2f60535b05 100644 --- a/app/server/appsmith-server/src/test/java/com/appsmith/server/migrations/JsonSchemaVersionsTest.java +++ b/app/server/appsmith-server/src/test/java/com/appsmith/server/migrations/JsonSchemaVersionsTest.java @@ -50,9 +50,7 @@ public class JsonSchemaVersionsTest { Mockito.when(featureFlagService.getCachedTenantFeatureFlags()) .thenAnswer((Answer) invocations -> cachedFeatures); - assertThat(jsonSchemaVersions.getServerVersion()).isNotEqualTo(jsonSchemaVersionsFallback.getServerVersion()); - assertThat(jsonSchemaVersions.getServerVersion()).isEqualTo(jsonSchemaVersionsFallback.getServerVersion() + 1); - + assertThat(jsonSchemaVersions.getServerVersion()).isEqualTo(jsonSchemaVersionsFallback.getServerVersion()); assertThat(jsonSchemaVersions.getClientVersion()).isEqualTo(jsonSchemaVersionsFallback.getClientVersion()); } } diff --git a/app/server/appsmith-server/src/test/java/com/appsmith/server/services/PageServiceTest.java b/app/server/appsmith-server/src/test/java/com/appsmith/server/services/PageServiceTest.java index f6f0bf00cd..fc70231786 100644 --- a/app/server/appsmith-server/src/test/java/com/appsmith/server/services/PageServiceTest.java +++ b/app/server/appsmith-server/src/test/java/com/appsmith/server/services/PageServiceTest.java @@ -746,6 +746,16 @@ public class PageServiceTest { assertThat(collections.get(0).getUnpublishedCollection().getPageId()) .isEqualTo(clonedPage.getId()); + NewAction actionWithCollection = actions.stream() + .filter(newAction -> StringUtils.hasLength( + newAction.getUnpublishedAction().getCollectionId())) + .findFirst() + .orElse(null); + + // Confirm that js action has correct collection id reference + assertThat(actionWithCollection.getUnpublishedAction().getCollectionId()) + .isEqualTo(collections.get(0).getId()); + // Check if the parent page collections are not altered List parentPageCollections = tuple.getT4(); assertThat(parentPageCollections).hasSize(1);