From 1bffe8a28a5e21a56b01f52c032da813458dd968 Mon Sep 17 00:00:00 2001 From: alex <48489896+devnaumov@users.noreply.github.com> Date: Fri, 26 Apr 2024 15:49:32 +0200 Subject: [PATCH] CB-4982 disable transaction manager for viewer (#2576) * CB-4982 disable transaction manager for viewer * CB-4982 change naming --------- Co-authored-by: kseniaguzeeva <112612526+kseniaguzeeva@users.noreply.github.com> --- .../src/TransactionManagerBootstrap.ts | 3 +++ .../src/TransactionManagerSettingsService.ts | 27 +++++++++++++++++++ .../src/index.ts | 9 +++++++ .../src/manifest.ts | 3 ++- 4 files changed, 41 insertions(+), 1 deletion(-) create mode 100644 webapp/packages/plugin-datasource-transaction-manager/src/TransactionManagerSettingsService.ts diff --git a/webapp/packages/plugin-datasource-transaction-manager/src/TransactionManagerBootstrap.ts b/webapp/packages/plugin-datasource-transaction-manager/src/TransactionManagerBootstrap.ts index c02fd63ec3..2492d18a6b 100644 --- a/webapp/packages/plugin-datasource-transaction-manager/src/TransactionManagerBootstrap.ts +++ b/webapp/packages/plugin-datasource-transaction-manager/src/TransactionManagerBootstrap.ts @@ -31,6 +31,7 @@ import { MENU_APP_ACTIONS } from '@cloudbeaver/plugin-top-app-bar'; import { ACTION_DATASOURCE_TRANSACTION_COMMIT } from './actions/ACTION_DATASOURCE_TRANSACTION_COMMIT'; import { ACTION_DATASOURCE_TRANSACTION_COMMIT_MODE_TOGGLE } from './actions/ACTION_DATASOURCE_TRANSACTION_COMMIT_MODE_TOGGLE'; import { ACTION_DATASOURCE_TRANSACTION_ROLLBACK } from './actions/ACTION_DATASOURCE_TRANSACTION_ROLLBACK'; +import { TransactionManagerSettingsService } from './TransactionManagerSettingsService'; @injectable() export class TransactionManagerBootstrap extends Bootstrap { @@ -46,6 +47,7 @@ export class TransactionManagerBootstrap extends Bootstrap { private readonly notificationService: NotificationService, private readonly commonDialogService: CommonDialogService, private readonly localizationService: LocalizationService, + private readonly transactionManagerSettingsService: TransactionManagerSettingsService, ) { super(); } @@ -59,6 +61,7 @@ export class TransactionManagerBootstrap extends Bootstrap { const transaction = this.getContextTransaction(); return ( + !this.transactionManagerSettingsService.disabled && !this.optionsPanelService.active && this.connectionSchemaManagerService.currentConnection?.connected === true && !!transaction?.context && diff --git a/webapp/packages/plugin-datasource-transaction-manager/src/TransactionManagerSettingsService.ts b/webapp/packages/plugin-datasource-transaction-manager/src/TransactionManagerSettingsService.ts new file mode 100644 index 0000000000..ac2a397877 --- /dev/null +++ b/webapp/packages/plugin-datasource-transaction-manager/src/TransactionManagerSettingsService.ts @@ -0,0 +1,27 @@ +/* + * CloudBeaver - Cloud Database Manager + * Copyright (C) 2020-2024 DBeaver Corp and others + * + * Licensed under the Apache License, Version 2.0. + * you may not use this file except in compliance with the License. + */ +import { Dependency, injectable } from '@cloudbeaver/core-di'; +import { SettingsProvider, SettingsProviderService } from '@cloudbeaver/core-settings'; +import { schema, schemaExtra } from '@cloudbeaver/core-utils'; + +const defaultSettings = schema.object({ + 'plugin.datasource-transaction-manager.disabled': schemaExtra.stringedBoolean().default(false), +}); + +@injectable() +export class TransactionManagerSettingsService extends Dependency { + get disabled(): boolean { + return this.settings.getValue('plugin.datasource-transaction-manager.disabled'); + } + readonly settings: SettingsProvider; + + constructor(private readonly settingsProviderService: SettingsProviderService) { + super(); + this.settings = this.settingsProviderService.createSettings(defaultSettings); + } +} diff --git a/webapp/packages/plugin-datasource-transaction-manager/src/index.ts b/webapp/packages/plugin-datasource-transaction-manager/src/index.ts index 08e0384d3c..a6e2490188 100644 --- a/webapp/packages/plugin-datasource-transaction-manager/src/index.ts +++ b/webapp/packages/plugin-datasource-transaction-manager/src/index.ts @@ -1 +1,10 @@ +/* + * CloudBeaver - Cloud Database Manager + * Copyright (C) 2020-2024 DBeaver Corp and others + * + * Licensed under the Apache License, Version 2.0. + * you may not use this file except in compliance with the License. + */ export { datasourceTransactionManagerPlugin } from './manifest'; + +export { TransactionManagerSettingsService } from './TransactionManagerSettingsService'; diff --git a/webapp/packages/plugin-datasource-transaction-manager/src/manifest.ts b/webapp/packages/plugin-datasource-transaction-manager/src/manifest.ts index b46508e305..d078f4db84 100644 --- a/webapp/packages/plugin-datasource-transaction-manager/src/manifest.ts +++ b/webapp/packages/plugin-datasource-transaction-manager/src/manifest.ts @@ -9,11 +9,12 @@ import type { PluginManifest } from '@cloudbeaver/core-di'; import { LocaleService } from './LocaleService'; import { TransactionManagerBootstrap } from './TransactionManagerBootstrap'; +import { TransactionManagerSettingsService } from './TransactionManagerSettingsService'; export const datasourceTransactionManagerPlugin: PluginManifest = { info: { name: 'Datasource transaction manager plugin', }, - providers: [TransactionManagerBootstrap, LocaleService], + providers: [TransactionManagerBootstrap, TransactionManagerSettingsService, LocaleService], };