From d31730116521174c89553e94012ea1d6f1f6a84b Mon Sep 17 00:00:00 2001 From: Wroud Date: Mon, 20 Sep 2021 13:02:14 +0300 Subject: [PATCH] fix: CB-1266 connections update behaviour --- .../core-app/src/NavigationTree/useElementsTree.ts | 3 +++ .../core-app/src/shared/NodesManager/NavTreeResource.ts | 3 +-- webapp/packages/core-blocks/src/useFocus.ts | 6 +++--- .../Connections/ConnectionsAdministrationService.ts | 3 +++ .../core-connections/src/ConnectionInfoResource.ts | 8 ++++++-- 5 files changed, 16 insertions(+), 7 deletions(-) diff --git a/webapp/packages/core-app/src/NavigationTree/useElementsTree.ts b/webapp/packages/core-app/src/NavigationTree/useElementsTree.ts index ef7d6ed5c8..0b951ffd1a 100644 --- a/webapp/packages/core-app/src/NavigationTree/useElementsTree.ts +++ b/webapp/packages/core-app/src/NavigationTree/useElementsTree.ts @@ -85,6 +85,9 @@ export function useElementsTree(options: IOptions): IElementsTree { for (const child of children) { const nodeState = state.get(child); if (!nodeState.expanded && child !== options.root) { + if (navNodeInfoResource.isOutdated(child)) { + await navNodeInfoResource.load(child); + } continue; } diff --git a/webapp/packages/core-app/src/shared/NodesManager/NavTreeResource.ts b/webapp/packages/core-app/src/shared/NodesManager/NavTreeResource.ts index 5f77ac6194..d816326c25 100644 --- a/webapp/packages/core-app/src/shared/NodesManager/NavTreeResource.ts +++ b/webapp/packages/core-app/src/shared/NodesManager/NavTreeResource.ts @@ -28,7 +28,6 @@ import { MetadataMap } from '@cloudbeaver/core-utils'; import { CoreSettingsService } from '../../CoreSettingsService'; import type { NavNode } from './EntityTypes'; import { NavNodeInfoResource, ROOT_NODE_PATH } from './NavNodeInfoResource'; -import { NodeManagerUtils } from './NodeManagerUtils'; // TODO: so much dirty export interface NodePath { @@ -290,7 +289,7 @@ export class NavTreeResource extends CachedMapResource { return; } - if (!this.has(connectionInfo.nodePath)) { + if (!this.navNodeInfoResource.has(connectionInfo.nodePath)) { return; } diff --git a/webapp/packages/core-blocks/src/useFocus.ts b/webapp/packages/core-blocks/src/useFocus.ts index 32af418107..fa07d914bd 100644 --- a/webapp/packages/core-blocks/src/useFocus.ts +++ b/webapp/packages/core-blocks/src/useFocus.ts @@ -40,9 +40,9 @@ export function useFocus({ .querySelectorAll(` button:not([disabled=disabled]), [href], - input:not([disabled=disabled],[readonly=readonly]), - select:not([disabled=disabled],[readonly=readonly]), - textarea:not([disabled=disabled],[readonly=readonly]), + input:not([disabled=disabled]):not([readonly=readonly]), + select:not([disabled=disabled]):not([readonly=readonly]), + textarea:not([disabled=disabled]):not([readonly=readonly]), [tabndex]:not([tabndex="-1"])`); let tabIndex = -1; diff --git a/webapp/packages/core-connections/src/Administration/Connections/ConnectionsAdministrationService.ts b/webapp/packages/core-connections/src/Administration/Connections/ConnectionsAdministrationService.ts index 2221677c3f..f7f4b4e3b9 100644 --- a/webapp/packages/core-connections/src/Administration/Connections/ConnectionsAdministrationService.ts +++ b/webapp/packages/core-connections/src/Administration/Connections/ConnectionsAdministrationService.ts @@ -12,6 +12,7 @@ import { injectable, Bootstrap } from '@cloudbeaver/core-di'; import { NotificationService } from '@cloudbeaver/core-events'; import { SessionDataResource } from '@cloudbeaver/core-root'; +import { ConnectionInfoResource } from '../../ConnectionInfoResource'; import { DBDriverResource } from '../../DBDriverResource'; import { NetworkHandlerResource } from '../../NetworkHandlerResource'; import { DatabaseConnection, ConnectionsResource } from '../ConnectionsResource'; @@ -36,6 +37,7 @@ export class ConnectionsAdministrationService extends Bootstrap { private connectionsResource: ConnectionsResource, private dbDriverResource: DBDriverResource, private readonly createConnectionService: CreateConnectionService, + private readonly connectionInfoResource: ConnectionInfoResource, private readonly sessionDataResource: SessionDataResource, private readonly networkHandlerResource: NetworkHandlerResource ) { @@ -73,6 +75,7 @@ export class ConnectionsAdministrationService extends Bootstrap { private async refreshUserConnections(configuration: boolean, outside: boolean): Promise { if (outside) { this.connectionsResource.cleanNewFlags(); + await this.connectionInfoResource.refreshUserConnections(); await this.sessionDataResource.refresh(); } } diff --git a/webapp/packages/core-connections/src/ConnectionInfoResource.ts b/webapp/packages/core-connections/src/ConnectionInfoResource.ts index e71fca82cd..05a248fb52 100644 --- a/webapp/packages/core-connections/src/ConnectionInfoResource.ts +++ b/webapp/packages/core-connections/src/ConnectionInfoResource.ts @@ -6,7 +6,7 @@ * you may not use this file except in compliance with the License. */ -import { action, makeObservable, runInAction } from 'mobx'; +import { action, makeObservable } from 'mobx'; import { injectable } from '@cloudbeaver/core-di'; import { Executor, ExecutorInterrupter, IExecutor } from '@cloudbeaver/core-executor'; @@ -78,13 +78,17 @@ export class ConnectionInfoResource extends CachedMapResource this.refreshUserConnections(true)); } + async updateSessionConnections(): Promise { + return await this.connectionsResource.updateSessionConnections(); + } + async refreshUserConnections(sessionUpdate?: boolean): Promise { this.sessionUpdate = sessionUpdate === true; try { const connectionsList = resourceKeyList(Array.from(this.data.keys())); await this.performUpdate(connectionsList, [], async () => { if (!sessionUpdate) { - const updated = await this.connectionsResource.updateSessionConnections(); + const updated = await this.updateSessionConnections(); if (!updated) { return;