fix: Navigation Settings API (#19780)
## Description This PR bug fixes the API for updating Navigation Settings (implemented by #19272). Fixes #19163 ## Type of change - Bug fix (non-breaking change which fixes an issue) ## How Has This Been Tested? - Manual ## Checklist: ### Dev activity - [x] My code follows the style guidelines of this project - [x] I have performed a self-review of my own code - [x] I have commented my code, particularly in hard-to-understand areas - [ ] I have made corresponding changes to the documentation - [x] My changes generate no new warnings - [ ] I have added tests that prove my fix is effective or that my feature works - [x] New and existing unit tests pass locally with my changes - [ ] PR is being merged under a feature flag ### QA activity: - [ ] Test plan has been approved by relevant developers - [ ] Test plan has been peer reviewed by QA - [ ] Cypress test cases have been added and approved by either SDET or manual QA - [ ] Organized project review call with relevant stakeholders after Round 1/2 of QA - [ ] Added Test Plan Approved label after reveiwing all Cypress test
This commit is contained in:
parent
68d21fba7c
commit
3b1c663a54
|
|
@ -110,8 +110,10 @@ public class Application extends BaseDomain {
|
|||
|
||||
EmbedSetting embedSetting;
|
||||
|
||||
@JsonIgnore
|
||||
NavigationSetting unpublishedNavigationSetting;
|
||||
|
||||
@JsonIgnore
|
||||
NavigationSetting publishedNavigationSetting;
|
||||
|
||||
@JsonIgnore
|
||||
|
|
@ -186,6 +188,8 @@ public class Application extends BaseDomain {
|
|||
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.unpublishedNavigationSetting = application.getUnpublishedNavigationSetting() == null ? null : new NavigationSetting();
|
||||
this.publishedNavigationSetting = application.getPublishedNavigationSetting() == null ? null : new NavigationSetting();
|
||||
this.unpublishedCustomJSLibs = application.getUnpublishedCustomJSLibs();
|
||||
}
|
||||
|
||||
|
|
@ -270,6 +274,17 @@ public class Application extends BaseDomain {
|
|||
private Boolean showNavigationBar;
|
||||
}
|
||||
|
||||
public NavigationSetting getNavigationSetting() {
|
||||
return Boolean.TRUE.equals(viewMode) ? publishedNavigationSetting : unpublishedNavigationSetting;
|
||||
}
|
||||
|
||||
public void setNavigationSetting(NavigationSetting navigationSetting) {
|
||||
if (Boolean.TRUE.equals(viewMode)) {
|
||||
publishedNavigationSetting = navigationSetting;
|
||||
} else {
|
||||
unpublishedNavigationSetting = navigationSetting;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* NavigationSetting stores the navigation configuration for the app
|
||||
|
|
|
|||
|
|
@ -1012,6 +1012,7 @@ public class ApplicationPageServiceCEImpl implements ApplicationPageServiceCE {
|
|||
|
||||
application.setPublishedAppLayout(application.getUnpublishedAppLayout());
|
||||
application.setPublishedAppPositioning(application.getUnpublishedAppPositioning());
|
||||
application.setPublishedNavigationSetting(application.getUnpublishedNavigationSetting());
|
||||
if (isPublishedManually) {
|
||||
application.setLastDeployedAt(Instant.now());
|
||||
}
|
||||
|
|
|
|||
|
|
@ -43,6 +43,7 @@ import com.appsmith.server.solutions.ApplicationPermission;
|
|||
import com.appsmith.server.solutions.DatasourcePermission;
|
||||
import com.mongodb.client.result.UpdateResult;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.ObjectUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.dao.DuplicateKeyException;
|
||||
import org.springframework.data.mongodb.core.ReactiveMongoTemplate;
|
||||
|
|
@ -310,6 +311,15 @@ public class ApplicationServiceCEImpl extends BaseService<ApplicationRepository,
|
|||
.flatMap(branchedApplication -> {
|
||||
application.setPages(null);
|
||||
application.setGitApplicationMetadata(null);
|
||||
/**
|
||||
* Retaining the logoAssetId field value while updating NavigationSetting
|
||||
*/
|
||||
Application.NavigationSetting requestNavSetting = application.getUnpublishedNavigationSetting();
|
||||
if (requestNavSetting != null) {
|
||||
Application.NavigationSetting presetNavSetting = ObjectUtils.defaultIfNull(branchedApplication.getUnpublishedNavigationSetting(), new Application.NavigationSetting());
|
||||
requestNavSetting.setLogoAssetId(ObjectUtils.defaultIfNull(presetNavSetting.getLogoAssetId(), ""));
|
||||
application.setUnpublishedNavigationSetting(requestNavSetting);
|
||||
}
|
||||
return this.update(branchedApplication.getId(), application);
|
||||
});
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2211,6 +2211,9 @@ public class ApplicationServiceCETest {
|
|||
testApplication.setName(appName);
|
||||
testApplication.setAppLayout(new Application.AppLayout(Application.AppLayout.Type.DESKTOP));
|
||||
testApplication.setAppPositioning(new Application.AppPositioning(Application.AppPositioning.Type.FIXED));
|
||||
Application.NavigationSetting appNavigationSetting = new Application.NavigationSetting();
|
||||
appNavigationSetting.setOrientation("top");
|
||||
testApplication.setNavigationSetting(appNavigationSetting);
|
||||
Mono<Application> applicationMono = applicationPageService.createApplication(testApplication, workspaceId)
|
||||
.flatMap(application -> applicationPageService.publish(application.getId(), true))
|
||||
.then(applicationService.findByName(appName, MANAGE_APPLICATIONS))
|
||||
|
|
@ -2243,6 +2246,7 @@ public class ApplicationServiceCETest {
|
|||
|
||||
assertThat(application.getPublishedAppLayout()).isEqualTo(application.getUnpublishedAppLayout());
|
||||
assertThat(application.getPublishedAppPositioning()).isEqualTo(application.getUnpublishedAppPositioning());
|
||||
assertThat(application.getPublishedNavigationSetting()).isEqualTo(application.getUnpublishedNavigationSetting());
|
||||
})
|
||||
.verifyComplete();
|
||||
}
|
||||
|
|
@ -2267,6 +2271,9 @@ public class ApplicationServiceCETest {
|
|||
testApplication.setName(appName);
|
||||
testApplication.setAppLayout(new Application.AppLayout(Application.AppLayout.Type.DESKTOP));
|
||||
testApplication.setAppPositioning(new Application.AppPositioning(Application.AppPositioning.Type.FIXED));
|
||||
Application.NavigationSetting appNavigationSetting = new Application.NavigationSetting();
|
||||
appNavigationSetting.setOrientation("top");
|
||||
testApplication.setNavigationSetting(appNavigationSetting);
|
||||
Mono<Tuple3<NewAction, ActionCollection, NewPage>> resultMono = applicationPageService.createApplication(testApplication, workspaceId)
|
||||
.flatMap(application -> {
|
||||
PageDTO page = new PageDTO();
|
||||
|
|
@ -2369,6 +2376,10 @@ public class ApplicationServiceCETest {
|
|||
gitConnectedApp.setAppLayout(new Application.AppLayout(Application.AppLayout.Type.DESKTOP));
|
||||
gitConnectedApp.setAppPositioning(new Application.AppPositioning(Application.AppPositioning.Type.FIXED));
|
||||
|
||||
Application.NavigationSetting appNavigationSetting = new Application.NavigationSetting();
|
||||
appNavigationSetting.setOrientation("top");
|
||||
gitConnectedApp.setNavigationSetting(appNavigationSetting);
|
||||
|
||||
Mono<Application> applicationMono = applicationService.update(gitConnectedApp.getId(), gitConnectedApp)
|
||||
.flatMap(updatedApp -> applicationPageService.publish(updatedApp.getId(), gitData.getBranchName(), true))
|
||||
.flatMap(application -> applicationService.findByBranchNameAndDefaultApplicationId(gitData.getBranchName(), gitData.getDefaultApplicationId(), MANAGE_APPLICATIONS))
|
||||
|
|
@ -2399,6 +2410,7 @@ public class ApplicationServiceCETest {
|
|||
|
||||
assertThat(application.getPublishedAppLayout()).isEqualTo(application.getUnpublishedAppLayout());
|
||||
assertThat(application.getPublishedAppPositioning()).isEqualTo(application.getUnpublishedAppPositioning());
|
||||
assertThat(application.getPublishedNavigationSetting()).isEqualTo(application.getUnpublishedNavigationSetting());
|
||||
})
|
||||
.verifyComplete();
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user