From 0a44793390aa81bb68296d92c665231a6c08fd4c Mon Sep 17 00:00:00 2001 From: Ashley Harrison Date: Thu, 18 May 2023 17:01:59 +0100 Subject: [PATCH] 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 --- public/app/core/selectors/navModel.ts | 10 ++++------ public/app/features/folders/state/navModel.ts | 4 +++- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/public/app/core/selectors/navModel.ts b/public/app/core/selectors/navModel.ts index a3ce03f60ea..4a966ff6250 100644 --- a/public/app/core/selectors/navModel.ts +++ b/public/app/core/selectors/navModel.ts @@ -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; } diff --git a/public/app/features/folders/state/navModel.ts b/public/app/features/folders/state/navModel.ts index f84f5baeb13..f33f5f4adb7 100644 --- a/public/app/features/folders/state/navModel.ts +++ b/public/app/features/folders/state/navModel.ts @@ -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,