Merge branch 'devel' of https://github.com/dbeaver/cloudbeaver into devel

This commit is contained in:
Wroud
2022-06-20 17:17:36 +03:00
5 changed files with 96 additions and 9 deletions
@@ -12,15 +12,15 @@ import {
ConnectionSchemaManagerService,
isObjectCatalogProvider, isObjectSchemaProvider, DATA_CONTEXT_NAV_NODE, NavigationTabsService
} from '@cloudbeaver/core-app';
import { isConnectionProvider } from '@cloudbeaver/core-connections';
import { ConnectionsManagerService, IConnectionExecutorData, isConnectionProvider } from '@cloudbeaver/core-connections';
import { Bootstrap, injectable } from '@cloudbeaver/core-di';
import { CommonDialogService, DialogueStateResult, RenameDialog } from '@cloudbeaver/core-dialogs';
import type { IExecutorHandler } from '@cloudbeaver/core-executor';
import { ExecutorInterrupter, IExecutionContextProvider, IExecutorHandler } from '@cloudbeaver/core-executor';
import { ExtensionUtils } from '@cloudbeaver/core-extensions';
import { ISessionAction, sessionActionContext, SessionActionService } from '@cloudbeaver/core-root';
import { ActionService, ACTION_RENAME, DATA_CONTEXT_MENU_NESTED, menuExtractActions, MenuService, ViewService } from '@cloudbeaver/core-view';
import { DATA_CONTEXT_CONNECTION } from '@cloudbeaver/plugin-connections';
import { DATA_CONTEXT_SQL_EDITOR_STATE, LocalStorageSqlDataSource } from '@cloudbeaver/plugin-sql-editor';
import { DATA_CONTEXT_SQL_EDITOR_STATE, LocalStorageSqlDataSource, SqlResultTabsService } from '@cloudbeaver/plugin-sql-editor';
import { ACTION_SQL_EDITOR_OPEN } from './ACTION_SQL_EDITOR_OPEN';
import { DATA_CONTEXT_SQL_EDITOR_TAB } from './DATA_CONTEXT_SQL_EDITOR_TAB';
@@ -41,12 +41,16 @@ export class SqlEditorBootstrap extends Bootstrap {
private readonly menuService: MenuService,
private readonly sessionActionService: SessionActionService,
private readonly commonDialogService: CommonDialogService,
private readonly sqlEditorTabService: SqlEditorTabService
private readonly sqlEditorTabService: SqlEditorTabService,
private readonly sqlResultTabsService: SqlResultTabsService,
private readonly connectionsManagerService: ConnectionsManagerService,
) {
super();
}
register(): void {
this.connectionsManagerService.onDisconnect.addHandler(this.disconnectHandler.bind(this));
this.mainMenuService.registerRootItem(
{
id: 'sql-editor',
@@ -195,4 +199,24 @@ export class SqlEditorBootstrap extends Bootstrap {
}
}
};
private async disconnectHandler(
data: IConnectionExecutorData,
contexts: IExecutionContextProvider<IConnectionExecutorData>
) {
if (data.state === 'before') {
for (const tab of this.sqlEditorTabService.sqlEditorTabs) {
if (!data.connections.includes(tab.handlerState.executionContext?.connectionId ?? '')) {
continue;
}
const canDisconnect = await this.sqlResultTabsService.canCloseResultTabs(tab.handlerState);
if (!canDisconnect) {
ExecutorInterrupter.interrupt(contexts);
return;
}
}
}
}
}