From 14e75be6d2f653b47459cf9a26e87a2117c8eb16 Mon Sep 17 00:00:00 2001 From: Dhruvik Neharia Date: Wed, 4 Oct 2023 14:48:20 +0530 Subject: [PATCH] fix: If navigation settings object is empty in application details, use the default settings (#27779) ## Description We removed the clone/duplication feature, but if an app for some reason has an empty navigation settings object - it doesn't show any pages in the navbar nor any of the customization options for navigation inside the app settings pane. This PR adds a check for this and uses the default navigation settings as a fallback. #### PR fixes following issue(s) Fixes #27721 Fixes #23565 #### Type of change - Bug fix (non-breaking change which fixes an issue) ## Testing #### How Has This Been Tested? To recreate this scenario, we can import this app that has an empty navigation settings object. [App JSON here.](https://github.com/appsmithorg/appsmith/files/12791775/navigationSettingsEmptyObject.json.zip) - [x] 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 --- .../src/ce/reducers/uiReducers/applicationsReducer.tsx | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/app/client/src/ce/reducers/uiReducers/applicationsReducer.tsx b/app/client/src/ce/reducers/uiReducers/applicationsReducer.tsx index 88814c86804..a9e09294d37 100644 --- a/app/client/src/ce/reducers/uiReducers/applicationsReducer.tsx +++ b/app/client/src/ce/reducers/uiReducers/applicationsReducer.tsx @@ -27,7 +27,7 @@ import type { IconNames } from "design-system"; import type { NavigationSetting } from "constants/AppConstants"; import { defaultNavigationSetting } from "constants/AppConstants"; import produce from "immer"; -import { groupBy } from "lodash"; +import { groupBy, isEmpty } from "lodash"; export const initialState: ApplicationsReduxState = { isFetchingApplications: false, @@ -242,7 +242,10 @@ export const handlers = { isFetchingApplication: false, }; - if (!newState.currentApplication.applicationDetail.navigationSetting) { + if ( + !newState.currentApplication.applicationDetail.navigationSetting || + isEmpty(newState.currentApplication.applicationDetail.navigationSetting) + ) { newState.currentApplication.applicationDetail.navigationSetting = defaultNavigationSetting; }