diff --git a/public/app/features/dashboard/containers/DashboardPage.tsx b/public/app/features/dashboard/containers/DashboardPage.tsx index e9c5a1fa95a..24514467686 100644 --- a/public/app/features/dashboard/containers/DashboardPage.tsx +++ b/public/app/features/dashboard/containers/DashboardPage.tsx @@ -437,23 +437,25 @@ function updateStatePageNavFromProps(props: Props, state: State): State { }; } - // Check if folder changed const { folderTitle, folderUid } = dashboard.meta; - if (folderTitle && folderUid && pageNav && pageNav.parentItem?.text !== folderTitle) { + if (folderUid && pageNav) { if (config.featureToggles.nestedFolders) { - const folderNavModel = folderUid ? getNavModel(navIndex, `folder-dashboards-${folderUid}`).main : undefined; + const folderNavModel = getNavModel(navIndex, `folder-dashboards-${folderUid}`).main; pageNav = { ...pageNav, parentItem: folderNavModel, }; } else { - pageNav = { - ...pageNav, - parentItem: { - text: folderTitle, - url: `/dashboards/f/${dashboard.meta.folderUid}`, - }, - }; + // Check if folder changed + if (folderTitle && pageNav.parentItem?.text !== folderTitle) { + pageNav = { + ...pageNav, + parentItem: { + text: folderTitle, + url: `/dashboards/f/${dashboard.meta.folderUid}`, + }, + }; + } } } diff --git a/public/app/features/dashboard/state/initDashboard.ts b/public/app/features/dashboard/state/initDashboard.ts index c4786a2529d..9964b32a700 100644 --- a/public/app/features/dashboard/state/initDashboard.ts +++ b/public/app/features/dashboard/state/initDashboard.ts @@ -104,6 +104,12 @@ async function fetchDashboard( return dashDTO; } case DashboardRoutes.New: { + // only the folder API has information about ancestors + // get parent folder (if it exists) and put it in the store + // this will be used to populate the full breadcrumb trail + if (config.featureToggles.nestedFolders && args.urlFolderUid) { + await dispatch(getFolderByUid(args.urlFolderUid)); + } return getNewDashboardModelData(args.urlFolderUid, args.panelType); } case DashboardRoutes.Path: {