diff --git a/app/client/src/pages/AppViewer/index.tsx b/app/client/src/pages/AppViewer/index.tsx index ee11d39ef449..030d7a0397bf 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 851b3173b605..047c037e6c4f 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 @@ private ApplicationJson migrateServerSchema(ApplicationJson applicationJson) { 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 18365ebda339..90ad2a2a3b87 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 ac8f0fe579aa..63b6c7e7d4e3 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 @@ @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 c4592830a8e7..cf18759a867a 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.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 @@ private static Set getInvalidDynamicBindingPathsInAction( } 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 b609d992c324..e8b71a426425 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.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 Mono cloneEntities(ClonePageMetaDTO clonePageMetaDTO) { actionDTO.setBranchName(clonePageMetaDTO.getBranchName()); actionDTO.setPageId(clonePageMetaDTO.getClonedPageDTO().getId()); + + boolean isJsAction = StringUtils.hasLength(actionDTO.getCollectionId()); + + if (isJsAction) { + String newCollectionId = + clonePageMetaDTO.getOldToNewCollectionIds().get(actionDTO.getCollectionId()); + actionDTO.setCollectionId(newCollectionId); + } /* * - Now create the new action from the template of the source action. * - Use CLONE_PAGE context to make sure that page / application clone quirks are @@ -45,7 +54,7 @@ public Mono cloneEntities(ClonePageMetaDTO clonePageMetaDTO) { // Indicates that source of action creation is clone page action cloneActionDTO.setSource(ActionCreationSourceTypeEnum.CLONE_PAGE); copyNestedNonNullProperties(actionDTO, cloneActionDTO); - return layoutActionService.createAction(cloneActionDTO, eventContext, Boolean.FALSE); + return layoutActionService.createAction(cloneActionDTO, eventContext, isJsAction); }) .then(); } diff --git a/app/server/appsmith-server/src/test/java/com/appsmith/server/imports/internal/ImportServiceTests.java b/app/server/appsmith-server/src/test/java/com/appsmith/server/imports/internal/ImportServiceTests.java index e222dfbaa836..8cf1762d8246 100644 --- a/app/server/appsmith-server/src/test/java/com/appsmith/server/imports/internal/ImportServiceTests.java +++ b/app/server/appsmith-server/src/test/java/com/appsmith/server/imports/internal/ImportServiceTests.java @@ -2505,8 +2505,6 @@ public void discardChange_addNavigationAndThemeSettingAfterImport_addedNavigatio StepVerifier.create(resultMonoWithDiscardOperation) .assertNext(application -> { 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 1bd93c36e229..d31c18fcdcbd 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 void migrateArtifactToLatestSchema_whenFeatureFlagIsOn_returnsIncremented 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 void migrateApplicationJsonToLatestSchema_whenFeatureFlagIsOn_returnsIncr 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 358d86c7aa03..2f60535b0514 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 void getServerVersion_whenFeatureFlagIsOn_returnsIncremented() { 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 f6f0bf00cde9..fc702317864c 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 void clonePage() { 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);