Fix tree refresh (#8625)

* first part

* remove another refresh collapse expand

* Fix scriptable nodes

* Fix test
This commit is contained in:
Charles Gagnon
2019-12-11 16:34:03 -08:00
committed by GitHub
parent 808ce4366d
commit 7e970d04ca
4 changed files with 10 additions and 29 deletions

View File

@@ -56,7 +56,6 @@ export class RefreshAction extends Action {
if (treeNode) { if (treeNode) {
try { try {
await this._tree.collapse(this.element);
try { try {
await this._objectExplorerService.refreshTreeNode(treeNode.getSession(), treeNode); await this._objectExplorerService.refreshTreeNode(treeNode.getSession(), treeNode);
} catch (error) { } catch (error) {
@@ -64,7 +63,6 @@ export class RefreshAction extends Action {
return true; return true;
} }
await this._tree.refresh(this.element); await this._tree.refresh(this.element);
return this._tree.expand(this.element);
} catch (ex) { } catch (ex) {
this._logService.error(ex); this._logService.error(ex);
return true; return true;

View File

@@ -187,7 +187,7 @@ export class ServerTreeActionProvider extends ContributableActionProvider {
// Contribute refresh action for scriptable objects via contribution // Contribute refresh action for scriptable objects via contribution
if (!this.isScriptableObject(context)) { 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; return actions;

View File

@@ -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.getObjectExplorerNode(TypeMoq.It.isAny()), TypeMoq.Times.atLeastOnce());
objectExplorerService.verify(x => x.refreshTreeNode(TypeMoq.It.isAny(), 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.refresh(TypeMoq.It.isAny()), TypeMoq.Times.atLeastOnce());
tree.verify(x => x.expand(TypeMoq.It.isAny()), TypeMoq.Times.atLeastOnce());
}).then(() => done(), (err) => { }).then(() => done(), (err) => {
done(err); done(err);
}); });

View File

@@ -311,35 +311,19 @@ CommandsRegistry.registerCommand({
CommandsRegistry.registerCommand({ CommandsRegistry.registerCommand({
id: OE_REFRESH_COMMAND_ID, id: OE_REFRESH_COMMAND_ID,
handler: async (accessor, args: ObjectExplorerActionsContext): Promise<void> => { handler: async (accessor, args: ObjectExplorerActionsContext): Promise<void> => {
const connectionManagementService = accessor.get(IConnectionManagementService);
const capabilitiesService = accessor.get(ICapabilitiesService);
const objectExplorerService = accessor.get(IObjectExplorerService); const objectExplorerService = accessor.get(IObjectExplorerService);
const logService = accessor.get(ILogService); const logService = accessor.get(ILogService);
const notificationService = accessor.get(INotificationService); const notificationService = accessor.get(INotificationService);
const connection = new ConnectionProfile(capabilitiesService, args.connectionProfile); const treeNode = await getTreeNode(args, objectExplorerService);
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; const tree = objectExplorerService.getServerTreeView().tree;
try { try {
await tree.collapse(treeNode);
await objectExplorerService.refreshTreeNode(treeNode.getSession(), treeNode); await objectExplorerService.refreshTreeNode(treeNode.getSession(), treeNode);
await tree.refresh(treeNode); await tree.refresh(treeNode);
await tree.expand(treeNode);
} catch (err) { } catch (err) {
// Display message to the user but also log the entire error to the console for the stack trace // 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))); notificationService.error(localize('refreshError', "An error occurred refreshing node '{0}': {1}", args.nodeInfo.label, getErrorMessage(err)));
logService.error(err); logService.error(err);
} }
} else {
logService.error(`Could not find tree node for node ${args.nodeInfo.label}`);
}
}
} }
}); });
//#endregion //#endregion