Nested folders: only stop recursing up the tree if we hit a folder (#68676)

only stop recursing up the tree if we hit a folder
This commit is contained in:
Ashley Harrison
2023-05-18 17:01:59 +01:00
committed by GitHub
parent 9e4b532979
commit 0a44793390
2 changed files with 7 additions and 7 deletions
+4 -6
View File
@@ -1,5 +1,6 @@
import { NavModel, NavModelItem, NavIndex } from '@grafana/data';
import { config } from '@grafana/runtime';
import { FOLDER_ID } from 'app/features/folders/state/navModel';
import { HOME_NAV_ID } from '../reducers/navModel';
@@ -38,12 +39,9 @@ export const getNavModel = (navIndex: NavIndex, id: string, fallback?: NavModel,
};
export function getRootSectionForNode(node: NavModelItem): NavModelItem {
// Don't recurse fully up the tree when nested folders is enabled
// This is to handle folder tabs that still use getNavModel
// Once we've transitioned those pages to build the nav model directly (as in BrowseDashboardsPage) we won't need this
// I _think_ this is correct/safe, but put the change behind the feature toggle just in case
if (config.featureToggles.nestedFolders) {
return node.parentItem && node.parentItem.id !== HOME_NAV_ID ? node.parentItem : node;
// Don't recurse fully up the folder tree when nested folders is enabled
if (config.featureToggles.nestedFolders && node.id === FOLDER_ID) {
return node;
} else {
return node.parentItem && node.parentItem.id !== HOME_NAV_ID ? getRootSectionForNode(node.parentItem) : node;
}
@@ -3,6 +3,8 @@ import { config } from '@grafana/runtime';
import { contextSrv } from 'app/core/services/context_srv';
import { AccessControlAction, FolderDTO } from 'app/types';
export const FOLDER_ID = 'manage-folder';
export const getDashboardsTabID = (folderUID: string) => `folder-dashboards-${folderUID}`;
export const getLibraryPanelsTabID = (folderUID: string) => `folder-library-panels-${folderUID}`;
export const getAlertingTabID = (folderUID: string) => `folder-alerting-${folderUID}`;
@@ -12,7 +14,7 @@ export const getSettingsTabID = (folderUID: string) => `folder-settings-${folder
export function buildNavModel(folder: FolderDTO, parents = folder.parents): NavModelItem {
const model: NavModelItem = {
icon: 'folder',
id: 'manage-folder',
id: FOLDER_ID,
subTitle: 'Manage folder dashboards and permissions',
url: folder.url,
text: folder.title,