@@ -18,6 +18,8 @@ import {
1818 PublicAppInfo ,
1919 ChromeBreadcrumb ,
2020 WorkspaceAvailability ,
21+ ChromeNavGroupUpdater ,
22+ NavGroupStatus ,
2123} from '../../../core/public' ;
2224import {
2325 WORKSPACE_FATAL_ERROR_APP_ID ,
@@ -33,7 +35,11 @@ import { SavedObjectsManagementPluginSetup } from '../../../plugins/saved_object
3335import { ManagementSetup } from '../../../plugins/management/public' ;
3436import { WorkspaceMenu } from './components/workspace_menu/workspace_menu' ;
3537import { getWorkspaceColumn } from './components/workspace_column' ;
36- import { filterWorkspaceConfigurableApps , isAppAccessibleInWorkspace } from './utils' ;
38+ import {
39+ filterWorkspaceConfigurableApps ,
40+ isAppAccessibleInWorkspace ,
41+ isNavGroupInFeatureConfigs ,
42+ } from './utils' ;
3743
3844type WorkspaceAppType = (
3945 params : AppMountParameters ,
@@ -53,7 +59,10 @@ export class WorkspacePlugin implements Plugin<{}, {}, WorkspacePluginSetupDeps>
5359 private currentWorkspaceIdSubscription ?: Subscription ;
5460 private managementCurrentWorkspaceIdSubscription ?: Subscription ;
5561 private appUpdater$ = new BehaviorSubject < AppUpdater > ( ( ) => undefined ) ;
62+ private navGroupUpdater$ = new BehaviorSubject < ChromeNavGroupUpdater > ( ( ) => undefined ) ;
5663 private workspaceConfigurableApps$ = new BehaviorSubject < PublicAppInfo [ ] > ( [ ] ) ;
64+ private unregisterNavGroupUpdater ?: ( ) => void ;
65+
5766 private _changeSavedObjectCurrentWorkspace ( ) {
5867 if ( this . coreStart ) {
5968 return this . coreStart . workspaces . currentWorkspaceId$ . subscribe ( ( currentWorkspaceId ) => {
@@ -89,6 +98,17 @@ export class WorkspacePlugin implements Plugin<{}, {}, WorkspacePluginSetupDeps>
8998 */
9099 return { status : AppStatus . inaccessible } ;
91100 } ) ;
101+
102+ this . navGroupUpdater$ . next ( ( navGroup ) => {
103+ if (
104+ currentWorkspace . features &&
105+ ! isNavGroupInFeatureConfigs ( navGroup . id , currentWorkspace . features )
106+ ) {
107+ return {
108+ status : NavGroupStatus . Hidden ,
109+ } ;
110+ }
111+ } ) ;
92112 }
93113 } ) ;
94114 } ;
@@ -166,6 +186,9 @@ export class WorkspacePlugin implements Plugin<{}, {}, WorkspacePluginSetupDeps>
166186 const workspaceClient = new WorkspaceClient ( core . http , core . workspaces ) ;
167187 await workspaceClient . init ( ) ;
168188 core . application . registerAppUpdater ( this . appUpdater$ ) ;
189+ this . unregisterNavGroupUpdater = core . chrome . navGroup . registerNavGroupUpdater (
190+ this . navGroupUpdater$
191+ ) ;
169192
170193 // Hide advance settings and dataSource menus and disable in setup
171194 if ( management ) {
@@ -331,5 +354,6 @@ export class WorkspacePlugin implements Plugin<{}, {}, WorkspacePluginSetupDeps>
331354 this . currentWorkspaceIdSubscription ?. unsubscribe ( ) ;
332355 this . managementCurrentWorkspaceIdSubscription ?. unsubscribe ( ) ;
333356 this . breadcrumbsSubscription ?. unsubscribe ( ) ;
357+ this . unregisterNavGroupUpdater ?.( ) ;
334358 }
335359}
0 commit comments