From ea5273c854fbbe9942e972c0d2c2ab46f565eba8 Mon Sep 17 00:00:00 2001 From: Wroud Date: Thu, 28 Oct 2021 10:37:59 +0300 Subject: [PATCH] refactor: CB-1354 context menu code cleanup --- .../NodesManager/NavNodeContextMenuService.ts | 12 ++--------- .../ContextMenu/ConnectionMenuBootstrap.ts | 21 +++++++------------ .../src/DataExportMenuService.ts | 6 +++++- .../src/SqlEditorBootstrap.ts | 4 ++-- 4 files changed, 16 insertions(+), 27 deletions(-) diff --git a/webapp/packages/core-app/src/shared/NodesManager/NavNodeContextMenuService.ts b/webapp/packages/core-app/src/shared/NodesManager/NavNodeContextMenuService.ts index e96809e893..a4f783b1ee 100644 --- a/webapp/packages/core-app/src/shared/NodesManager/NavNodeContextMenuService.ts +++ b/webapp/packages/core-app/src/shared/NodesManager/NavNodeContextMenuService.ts @@ -42,10 +42,6 @@ export class NavNodeContextMenuService extends Bootstrap { this.actionService.addHandler({ id: 'nav-node-base-handler', isActionApplicable(context, action) { - if (context.has(DATA_CONTEXT_MENU_NESTED)) { - return false; - } - const node = context.tryGet(DATA_CONTEXT_NAV_NODE); if (!node) { @@ -57,11 +53,7 @@ export class NavNodeContextMenuService extends Bootstrap { } if (action === ACTION_DELETE) { - return ( - node.features?.includes(ENodeFeature.canDelete) - // || node.objectFeatures.includes(EObjectFeature.dataSource) - || false - ); + return node.features?.includes(ENodeFeature.canDelete) || false; } return [ @@ -136,7 +128,7 @@ export class NavNodeContextMenuService extends Bootstrap { }); this.menuService.addCreator({ - isApplicable: context => context.has(DATA_CONTEXT_NAV_NODE), + isApplicable: context => context.has(DATA_CONTEXT_NAV_NODE) && !context.has(DATA_CONTEXT_MENU_NESTED), getItems: (context, items) => [ ...items, ACTION_OPEN, diff --git a/webapp/packages/plugin-connections/src/ContextMenu/ConnectionMenuBootstrap.ts b/webapp/packages/plugin-connections/src/ContextMenu/ConnectionMenuBootstrap.ts index 95d5d4a8d1..96f78f0aa3 100644 --- a/webapp/packages/plugin-connections/src/ContextMenu/ConnectionMenuBootstrap.ts +++ b/webapp/packages/plugin-connections/src/ContextMenu/ConnectionMenuBootstrap.ts @@ -53,7 +53,7 @@ export class ConnectionMenuBootstrap extends Bootstrap { return ( context.has(DATA_CONTEXT_CONNECTION) - && !context.find(DATA_CONTEXT_MENU, MENU_CONNECTION_VIEW) + && !context.has(DATA_CONTEXT_MENU_NESTED) ); }, getItems: (context, items) => [ @@ -79,19 +79,11 @@ export class ConnectionMenuBootstrap extends Bootstrap { this.actionService.addHandler({ id: 'connection-view', - isActionApplicable: (context, action) => { - const connection = context.get(DATA_CONTEXT_CONNECTION); - - if (!connection.connected) { - return false; - } - - return [ - ACTION_CONNECTION_VIEW_SIMPLE, - ACTION_CONNECTION_VIEW_ADVANCED, - ACTION_CONNECTION_VIEW_SYSTEM_OBJECTS, - ].includes(action); - }, + isActionApplicable: (context, action) => [ + ACTION_CONNECTION_VIEW_SIMPLE, + ACTION_CONNECTION_VIEW_ADVANCED, + ACTION_CONNECTION_VIEW_SYSTEM_OBJECTS, + ].includes(action), isChecked: (context, action) => { const connection = context.get(DATA_CONTEXT_CONNECTION); @@ -191,6 +183,7 @@ export class ConnectionMenuBootstrap extends Bootstrap { } case ACTION_CONNECTION_EDIT: { this.publicConnectionFormService.open({ connectionId: connection.id }); + break; } } }, diff --git a/webapp/packages/plugin-data-export/src/DataExportMenuService.ts b/webapp/packages/plugin-data-export/src/DataExportMenuService.ts index 50141433df..503628a30a 100644 --- a/webapp/packages/plugin-data-export/src/DataExportMenuService.ts +++ b/webapp/packages/plugin-data-export/src/DataExportMenuService.ts @@ -68,7 +68,11 @@ export class DataExportMenuService { this.actionService.addHandler({ id: 'data-export', - isActionApplicable: (context, action) => action === ACTION_EXPORT, + isActionApplicable: (context, action) => ( + action === ACTION_EXPORT + && context.has(DATA_CONTEXT_CONNECTION) + && context.has(DATA_CONTEXT_NAV_NODE) + ), handler: async (context, action) => { const node = context.get(DATA_CONTEXT_NAV_NODE); const connection = context.get(DATA_CONTEXT_CONNECTION); diff --git a/webapp/packages/plugin-sql-editor/src/SqlEditorBootstrap.ts b/webapp/packages/plugin-sql-editor/src/SqlEditorBootstrap.ts index 8dc2c08d2c..d715d222e0 100644 --- a/webapp/packages/plugin-sql-editor/src/SqlEditorBootstrap.ts +++ b/webapp/packages/plugin-sql-editor/src/SqlEditorBootstrap.ts @@ -71,9 +71,9 @@ export class SqlEditorBootstrap extends Bootstrap { id: 'sql-editor', isActionApplicable: (context, action) => action === ACTION_SQL_EDITOR_OPEN, handler: async (context, action) => { - const connection = context.get(DATA_CONTEXT_CONNECTION); + const connection = context.tryGet(DATA_CONTEXT_CONNECTION); - this.sqlEditorNavigatorService.openNewEditor(connection.id); + this.sqlEditorNavigatorService.openNewEditor(connection?.id); }, }); }