Files
cloudbeaver/webapp/packages/plugin-tools-panel/src/ToolsPanelSettingsService.ts
T
Alexey Potsetsuevandmr-anton-t 80f258b561 dbeaver/pro#6744 refactor: migration to @wroud/di (#3704)
* dbeaver/pro#6744 refactor: migration to `@wroud/di`

* tests: enable settings tests

* chore: update syntax

* fix: dynamic theme detection

* fix: skip not stable test

* fix: skip whole test

* fix: make theme optional

* fix: page reload

* tests: skip unstable test

* fix: remove optional

* fix: load system theme

* fix: prevent the system theme from always loading despite not being selected

---------

Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
2025-08-29 18:22:11 +08:00

52 lines
1.6 KiB
TypeScript

/*
* CloudBeaver - Cloud Database Manager
* Copyright (C) 2020-2025 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 { injectable } from '@cloudbeaver/core-di';
import { ESettingsValueType, SettingsManagerService, SettingsProvider, SettingsProviderService } from '@cloudbeaver/core-settings';
import { schema, schemaExtra } from '@cloudbeaver/core-utils';
import { TOOLS_PANEL_SETTINGS_GROUP } from './TOOLS_PANEL_SETTINGS_GROUP.js';
const settings = schema.object({
'plugin.tools-panel.disabled': schemaExtra.stringedBoolean().default(false),
});
type Settings = typeof settings;
@injectable(() => [SettingsProviderService, SettingsManagerService])
export class ToolsPanelSettingsService {
get disabled(): boolean {
return this.settings.getValue('plugin.tools-panel.disabled');
}
readonly settings: SettingsProvider<Settings>;
constructor(
private readonly settingsProviderService: SettingsProviderService,
private readonly settingsManagerService: SettingsManagerService,
) {
this.settings = this.settingsProviderService.createSettings(settings);
this.registerSettings();
}
private registerSettings() {
this.settingsManagerService.registerSettings<Settings>(() => [
{
key: 'plugin.tools-panel.disabled',
access: {
scope: ['server', 'role'],
},
group: TOOLS_PANEL_SETTINGS_GROUP,
type: ESettingsValueType.Checkbox,
name: 'plugin_tools_panel_settings_disable_label',
description: 'plugin_tools_panel_settings_disable_description',
},
]);
}
}