From 3e9e71ca6d8e7b35ccdc536c0352ef95c73b0cde Mon Sep 17 00:00:00 2001 From: alex <48489896+devnaumov@users.noreply.github.com> Date: Thu, 20 Aug 2026 12:08:16 +0200 Subject: [PATCH] dbeaver/pro#10177 pass defaults to main properties (#4538) * dbeaver/pro#10177 pass defaults to main properties * dbeaver/pro#10177 postpone state init --------- Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com> Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com> --- .../Options/ConnectionFormOptionsPart.ts | 43 ++++++++++++++++--- .../src/ConnectionForm/Options/Options.tsx | 2 +- .../PublicConnectionFormService.ts | 14 +++--- 3 files changed, 46 insertions(+), 13 deletions(-) diff --git a/webapp/packages/plugin-connections/src/ConnectionForm/Options/ConnectionFormOptionsPart.ts b/webapp/packages/plugin-connections/src/ConnectionForm/Options/ConnectionFormOptionsPart.ts index 32e4d57954..a902aaa672 100644 --- a/webapp/packages/plugin-connections/src/ConnectionForm/Options/ConnectionFormOptionsPart.ts +++ b/webapp/packages/plugin-connections/src/ConnectionForm/Options/ConnectionFormOptionsPart.ts @@ -49,11 +49,11 @@ const MAIN_PROPERTY_HOST_KEY = 'host'; const MAIN_PROPERTY_PORT_KEY = 'port'; const MAIN_PROPERTY_SERVER_KEY = 'server'; -const defaultStateGetter = (connectionId?: string, credentials?: Record) => +const defaultStateGetter = (connectionId?: string) => ({ connectionId, configurationType: DriverConfigurationType.Manual, - credentials: credentials ?? {}, + credentials: {}, mainPropertyValues: {}, expertSettingsValues: {}, networkHandlersConfig: [], @@ -185,14 +185,12 @@ export class ConnectionFormOptionsPart extends FormPart { if (this.formState.mode === 'create') { - const credentials = this.state.authModelId - ? getObjectPropertyDefaults(await this.getConnectionAuthModelProperties(this.state.authModelId)) - : undefined; - - this.setInitialState(defaultStateGetter(this.initialState.connectionId ?? this.formState.state.connectionId, credentials)); + const defaults = await this.getDefaults(); await this.setDriverId(this.state.driverId); + this.setInitialState(defaults); + return; } @@ -340,6 +338,37 @@ export class ConnectionFormOptionsPart extends FormPart, contexts: IExecutionContextProvider>, diff --git a/webapp/packages/plugin-connections/src/ConnectionForm/Options/Options.tsx b/webapp/packages/plugin-connections/src/ConnectionForm/Options/Options.tsx index c43f7e38cd..bc291083e4 100644 --- a/webapp/packages/plugin-connections/src/ConnectionForm/Options/Options.tsx +++ b/webapp/packages/plugin-connections/src/ConnectionForm/Options/Options.tsx @@ -113,7 +113,7 @@ export const Options: TabContainerPanelComponent = observe const driverMap = useResource(Options, DBDriverResource, { key: optionsPart.state.driverId || null, - includes: ['includeProviderProperties', 'includeMainProperties', 'includeDriverProperties'] as const, + includes: ['includeProviderProperties', 'includeMainProperties'] as const, }); const driver = driverMap.data; diff --git a/webapp/packages/plugin-connections/src/PublicConnectionForm/PublicConnectionFormService.ts b/webapp/packages/plugin-connections/src/PublicConnectionForm/PublicConnectionFormService.ts index 80d3e0e6c8..30a6e17efb 100644 --- a/webapp/packages/plugin-connections/src/PublicConnectionForm/PublicConnectionFormService.ts +++ b/webapp/packages/plugin-connections/src/PublicConnectionForm/PublicConnectionFormService.ts @@ -83,7 +83,8 @@ export class PublicConnectionFormService { async change(projectId: string, config: ConnectionConfig, availableDrivers?: string[]): Promise { this.formState?.dispose(); - this.formState = new ConnectionFormState(this.serviceProvider, this.connectionFormService, { + + const formState = new ConnectionFormState(this.serviceProvider, this.connectionFormService, { projectId, availableDrivers: availableDrivers ?? [], type: 'public', @@ -91,15 +92,18 @@ export class PublicConnectionFormService { connectionId: config.connectionId, }).setMode(config.connectionId ? FormMode.Edit : FormMode.Create); - await this.optionsPart?.load(); + const optionsPart = getConnectionFormOptionsPart(formState); if (config.driverId) { - await this.optionsPart?.setDriverId(config.driverId); + await optionsPart.setDriverId(config.driverId); } - Object.assign(this.optionsPart!.state, config); + await optionsPart.load(); - this.formState.disposeTask.addHandler(this.close.bind(this, true)); + Object.assign(optionsPart.state, config); + + formState.disposeTask.addHandler(this.close.bind(this, true)); + this.formState = formState; } async open(projectId: string, config: ConnectionConfig, availableDrivers?: string[]): Promise {