mirror of
https://github.com/dbeaver/cloudbeaver.git
synced 2026-09-24 16:04:36 +08:00
fix(core-app): CB-927 navigation tree cache flush
This commit is contained in:
@@ -10,10 +10,12 @@ import { observer } from 'mobx-react-lite';
|
||||
import { useCallback, useMemo, useState } from 'react';
|
||||
import styled, { css } from 'reshadow';
|
||||
|
||||
import { Loader } from '@cloudbeaver/core-blocks';
|
||||
import { Loader, useMapResource } from '@cloudbeaver/core-blocks';
|
||||
import { MetadataMap } from '@cloudbeaver/core-utils';
|
||||
|
||||
import type { NavNode } from '../shared/NodesManager/EntityTypes';
|
||||
import { ROOT_NODE_PATH } from '../shared/NodesManager/NavNodeInfoResource';
|
||||
import { NavTreeResource } from '../shared/NodesManager/NavTreeResource';
|
||||
import { useChildren } from '../shared/useChildren';
|
||||
import { NavigationNodeElement } from './NavigationTreeNode/NavigationNodeElement';
|
||||
import { ITreeContext, TreeContext } from './TreeContext';
|
||||
@@ -65,6 +67,7 @@ export const ElementsTree: React.FC<Props> = observer(function ElementsTree({
|
||||
}) {
|
||||
const nodeChildren = useChildren(root);
|
||||
const Placeholder = emptyPlaceholder;
|
||||
useMapResource(NavTreeResource, root || ROOT_NODE_PATH);
|
||||
const [localTreeNodesState] = useState(() => new MetadataMap<string, ITreeNodeState>(() => ({ filter: '' })));
|
||||
|
||||
const treeNodesState = localState || localTreeNodesState;
|
||||
|
||||
@@ -9,13 +9,12 @@
|
||||
import { observer } from 'mobx-react-lite';
|
||||
import styled, { css } from 'reshadow';
|
||||
|
||||
import { useFocus, useMapResource } from '@cloudbeaver/core-blocks';
|
||||
import { useFocus } from '@cloudbeaver/core-blocks';
|
||||
import { useService } from '@cloudbeaver/core-di';
|
||||
import { usePermission, EPermission } from '@cloudbeaver/core-root';
|
||||
import { useActiveView } from '@cloudbeaver/core-view';
|
||||
|
||||
import { ROOT_NODE_PATH } from '../shared/NodesManager/NavNodeInfoResource';
|
||||
import { NavTreeResource } from '../shared/NodesManager/NavTreeResource';
|
||||
import { ElementsTree } from './ElementsTree';
|
||||
import { NavigationTreeService } from './NavigationTreeService';
|
||||
import { useNavigationTree } from './useNavigationTree';
|
||||
@@ -60,7 +59,6 @@ export const NavigationTree = observer(function NavigationTree() {
|
||||
const [ref] = useFocus<HTMLDivElement>({ onFocus, onBlur });
|
||||
const isEnabled = usePermission(EPermission.public);
|
||||
const { isSelected, handleOpen, handleSelect } = useNavigationTree();
|
||||
useMapResource(NavTreeResource, isEnabled ? ROOT_NODE_PATH : null);
|
||||
|
||||
if (!isEnabled) {
|
||||
return null;
|
||||
|
||||
@@ -16,7 +16,6 @@ import { ResourceKeyUtils } from '@cloudbeaver/core-sdk';
|
||||
import { MetadataMap } from '@cloudbeaver/core-utils';
|
||||
import type { IActiveView } from '@cloudbeaver/core-view';
|
||||
|
||||
import { CoreSettingsService } from '../CoreSettingsService';
|
||||
import { EObjectFeature } from '../shared/NodesManager/EObjectFeature';
|
||||
import { NavNodeExtensionsService } from '../shared/NodesManager/NavNodeExtensionsService';
|
||||
import { NavNodeInfoResource, ROOT_NODE_PATH } from '../shared/NodesManager/NavNodeInfoResource';
|
||||
@@ -45,7 +44,6 @@ export class NavigationTreeService {
|
||||
private connectionAuthService: ConnectionAuthService,
|
||||
private navNodeExtensionsService: NavNodeExtensionsService,
|
||||
private navTreeResource: NavTreeResource,
|
||||
private coreSettingsService: CoreSettingsService,
|
||||
private navNodeInfoResource: NavNodeInfoResource
|
||||
) {
|
||||
makeObservable<NavigationTreeService, 'unselectAll'>(this, {
|
||||
|
||||
@@ -13,7 +13,7 @@ import { injectable, Bootstrap } from '@cloudbeaver/core-di';
|
||||
import { NotificationService } from '@cloudbeaver/core-events';
|
||||
import { IExecutor, Executor, IExecutionContextProvider } from '@cloudbeaver/core-executor';
|
||||
import {
|
||||
PermissionsService, EPermission, ServerService, SessionDataResource
|
||||
PermissionsService, EPermission, ServerService
|
||||
} from '@cloudbeaver/core-root';
|
||||
import {
|
||||
GraphQLService, resourceKeyList, ResourceKey, ResourceKeyUtils
|
||||
@@ -100,7 +100,6 @@ export class NavNodeManagerService extends Bootstrap {
|
||||
private connectionAuthService: ConnectionAuthService,
|
||||
private notificationService: NotificationService,
|
||||
private serverService: ServerService,
|
||||
private sessionDataResource: SessionDataResource,
|
||||
navigationService: NavigationService
|
||||
) {
|
||||
super();
|
||||
@@ -117,8 +116,8 @@ export class NavNodeManagerService extends Bootstrap {
|
||||
}
|
||||
|
||||
register(): void {
|
||||
this.sessionDataResource.onDataUpdate.addHandler(this.refreshRoot.bind(this));
|
||||
this.connectionInfo.onSessionUpdate.addHandler(this.connectionRefreshHandler.bind(this));
|
||||
// this.sessionDataResource.onDataUpdate.addHandler(this.refreshRoot.bind(this));
|
||||
// this.connectionInfo.onSessionUpdate.addHandler(this.connectionRefreshHandler.bind(this));
|
||||
this.connectionInfo.onItemAdd.addHandler(this.connectionUpdateHandler.bind(this));
|
||||
this.connectionInfo.onItemDelete.addHandler(this.connectionRemoveHandler.bind(this));
|
||||
this.connectionInfo.onConnectionCreate.addHandler(this.connectionCreateHandler.bind(this));
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
import { action, computed, makeObservable } from 'mobx';
|
||||
|
||||
import { injectable } from '@cloudbeaver/core-di';
|
||||
import { SessionDataResource } from '@cloudbeaver/core-root';
|
||||
import {
|
||||
GraphQLService,
|
||||
CachedMapResource,
|
||||
@@ -48,6 +49,7 @@ export class NavTreeResource extends CachedMapResource<string, string[]> {
|
||||
private graphQLService: GraphQLService,
|
||||
private navNodeInfoResource: NavNodeInfoResource,
|
||||
private coreSettingsService: CoreSettingsService,
|
||||
private sessionDataResource: SessionDataResource
|
||||
) {
|
||||
super();
|
||||
|
||||
@@ -64,6 +66,7 @@ export class NavTreeResource extends CachedMapResource<string, string[]> {
|
||||
includes: [],
|
||||
}));
|
||||
this.onDataOutdated.addHandler(navNodeInfoResource.markOutdated.bind(navNodeInfoResource));
|
||||
this.sessionDataResource.onDataUpdate.addPostHandler(() => this.markOutdated());
|
||||
}
|
||||
|
||||
setDetails(keyObject: ResourceKey<string>, state: boolean): void {
|
||||
|
||||
Reference in New Issue
Block a user