From 7e970d04ca5f91c2e64992b0cdd13f6bd1841604 Mon Sep 17 00:00:00 2001 From: Charles Gagnon Date: Wed, 11 Dec 2019 16:34:03 -0800 Subject: [PATCH] Fix tree refresh (#8625) * first part * remove another refresh collapse expand * Fix scriptable nodes * Fix test --- .../browser/connectionTreeAction.ts | 2 -- .../browser/serverTreeActionProvider.ts | 2 +- .../browser/connectionTreeActions.test.ts | 1 - .../scripting/browser/scriptingActions.ts | 34 +++++-------------- 4 files changed, 10 insertions(+), 29 deletions(-) diff --git a/src/sql/workbench/contrib/objectExplorer/browser/connectionTreeAction.ts b/src/sql/workbench/contrib/objectExplorer/browser/connectionTreeAction.ts index c3d0e5a521..e04c6d247e 100644 --- a/src/sql/workbench/contrib/objectExplorer/browser/connectionTreeAction.ts +++ b/src/sql/workbench/contrib/objectExplorer/browser/connectionTreeAction.ts @@ -56,7 +56,6 @@ export class RefreshAction extends Action { if (treeNode) { try { - await this._tree.collapse(this.element); try { await this._objectExplorerService.refreshTreeNode(treeNode.getSession(), treeNode); } catch (error) { @@ -64,7 +63,6 @@ export class RefreshAction extends Action { return true; } await this._tree.refresh(this.element); - return this._tree.expand(this.element); } catch (ex) { this._logService.error(ex); return true; diff --git a/src/sql/workbench/contrib/objectExplorer/browser/serverTreeActionProvider.ts b/src/sql/workbench/contrib/objectExplorer/browser/serverTreeActionProvider.ts index b2258f5111..e862aa689e 100644 --- a/src/sql/workbench/contrib/objectExplorer/browser/serverTreeActionProvider.ts +++ b/src/sql/workbench/contrib/objectExplorer/browser/serverTreeActionProvider.ts @@ -187,7 +187,7 @@ export class ServerTreeActionProvider extends ContributableActionProvider { // Contribute refresh action for scriptable objects via contribution if (!this.isScriptableObject(context)) { - actions.push(this._instantiationService.createInstance(RefreshAction, RefreshAction.ID, RefreshAction.LABEL, context.tree, context.profile)); + actions.push(this._instantiationService.createInstance(RefreshAction, RefreshAction.ID, RefreshAction.LABEL, context.tree, context.treeNode || context.profile)); } return actions; diff --git a/src/sql/workbench/contrib/objectExplorer/test/browser/connectionTreeActions.test.ts b/src/sql/workbench/contrib/objectExplorer/test/browser/connectionTreeActions.test.ts index 8911fa7cf3..00775dd2c9 100644 --- a/src/sql/workbench/contrib/objectExplorer/test/browser/connectionTreeActions.test.ts +++ b/src/sql/workbench/contrib/objectExplorer/test/browser/connectionTreeActions.test.ts @@ -428,7 +428,6 @@ suite('SQL Connection Tree Action tests', () => { objectExplorerService.verify(x => x.getObjectExplorerNode(TypeMoq.It.isAny()), TypeMoq.Times.atLeastOnce()); objectExplorerService.verify(x => x.refreshTreeNode(TypeMoq.It.isAny(), TypeMoq.It.isAny()), TypeMoq.Times.atLeastOnce()); tree.verify(x => x.refresh(TypeMoq.It.isAny()), TypeMoq.Times.atLeastOnce()); - tree.verify(x => x.expand(TypeMoq.It.isAny()), TypeMoq.Times.atLeastOnce()); }).then(() => done(), (err) => { done(err); }); diff --git a/src/sql/workbench/contrib/scripting/browser/scriptingActions.ts b/src/sql/workbench/contrib/scripting/browser/scriptingActions.ts index 84da157af4..1bc5ad8897 100644 --- a/src/sql/workbench/contrib/scripting/browser/scriptingActions.ts +++ b/src/sql/workbench/contrib/scripting/browser/scriptingActions.ts @@ -311,34 +311,18 @@ CommandsRegistry.registerCommand({ CommandsRegistry.registerCommand({ id: OE_REFRESH_COMMAND_ID, handler: async (accessor, args: ObjectExplorerActionsContext): Promise => { - const connectionManagementService = accessor.get(IConnectionManagementService); - const capabilitiesService = accessor.get(ICapabilitiesService); const objectExplorerService = accessor.get(IObjectExplorerService); const logService = accessor.get(ILogService); const notificationService = accessor.get(INotificationService); - const connection = new ConnectionProfile(capabilitiesService, args.connectionProfile); - if (connectionManagementService.isConnected(undefined, connection)) { - let treeNode = await getTreeNode(args, objectExplorerService); - if (!treeNode) { - await objectExplorerService.updateObjectExplorerNodes(connection.toIConnectionProfile()); - treeNode = objectExplorerService.getObjectExplorerNode(connection); - } - if (treeNode) { - const tree = objectExplorerService.getServerTreeView().tree; - try { - await tree.collapse(treeNode); - await objectExplorerService.refreshTreeNode(treeNode.getSession(), treeNode); - await tree.refresh(treeNode); - await tree.expand(treeNode); - } catch (err) { - // Display message to the user but also log the entire error to the console for the stack trace - notificationService.error(localize('refreshError', "An error occurred refreshing node '{0}': {1}", args.nodeInfo.label, getErrorMessage(err))); - logService.error(err); - } - - } else { - logService.error(`Could not find tree node for node ${args.nodeInfo.label}`); - } + const treeNode = await getTreeNode(args, objectExplorerService); + const tree = objectExplorerService.getServerTreeView().tree; + try { + await objectExplorerService.refreshTreeNode(treeNode.getSession(), treeNode); + await tree.refresh(treeNode); + } catch (err) { + // Display message to the user but also log the entire error to the console for the stack trace + notificationService.error(localize('refreshError', "An error occurred refreshing node '{0}': {1}", args.nodeInfo.label, getErrorMessage(err))); + logService.error(err); } } });