From 8a8745701b711cde08a0f62c4689a5518b99ee76 Mon Sep 17 00:00:00 2001 From: Matt Irvine Date: Fri, 5 Oct 2018 14:14:19 -0700 Subject: [PATCH] Stop OE connection spinner when user closes connection dialog (#2777) --- .../parts/connection/common/connectionManagement.ts | 2 ++ .../connection/common/connectionManagementService.ts | 4 +++- .../connectionDialog/connectionDialogService.ts | 3 +++ src/sql/parts/editData/common/editDataInput.ts | 3 +++ .../parts/objectExplorer/viewlet/treeUpdateUtils.ts | 12 +++++++----- src/sql/parts/query/common/queryInput.ts | 3 +++ .../parts/connection/connectionDialogService.test.ts | 3 ++- .../connection/connectionManagementService.test.ts | 4 ++++ 8 files changed, 27 insertions(+), 7 deletions(-) diff --git a/src/sql/parts/connection/common/connectionManagement.ts b/src/sql/parts/connection/common/connectionManagement.ts index 724d735d49..35339f1932 100644 --- a/src/sql/parts/connection/common/connectionManagement.ts +++ b/src/sql/parts/connection/common/connectionManagement.ts @@ -67,6 +67,7 @@ export interface IConnectionCallbacks { onConnectReject(error?: string): void; onConnectSuccess(params?: INewConnectionParams): void; onDisconnect(): void; + onConnectCanceled(): void; } export const SERVICE_ID = 'connectionManagementService'; @@ -336,6 +337,7 @@ export interface IConnectableInput { onConnectReject(error?: string): void; onConnectSuccess(params?: INewConnectionParams): void; onDisconnect(): void; + onConnectCanceled(): void; } export enum ConnectionType { diff --git a/src/sql/parts/connection/common/connectionManagementService.ts b/src/sql/parts/connection/common/connectionManagementService.ts index 9b057aa729..af123e2d0c 100644 --- a/src/sql/parts/connection/common/connectionManagementService.ts +++ b/src/sql/parts/connection/common/connectionManagementService.ts @@ -366,6 +366,7 @@ export class ConnectionManagementService extends Disposable implements IConnecti onConnectStart: callbacks ? callbacks.onConnectStart : undefined, onConnectSuccess: callbacks ? callbacks.onConnectSuccess : undefined, onDisconnect: callbacks ? callbacks.onDisconnect : undefined, + onConnectCanceled: callbacks ? callbacks.onConnectCanceled : undefined, uri: uri }; } @@ -438,7 +439,8 @@ export class ConnectionManagementService extends Disposable implements IConnecti onConnectReject: () => { }, onConnectStart: () => { }, onConnectSuccess: () => { }, - onDisconnect: () => { } + onDisconnect: () => { }, + onConnectCanceled: () => { } }; } if (!options) { diff --git a/src/sql/parts/connection/connectionDialog/connectionDialogService.ts b/src/sql/parts/connection/connectionDialog/connectionDialogService.ts index ef88092c4c..e54ae207d4 100644 --- a/src/sql/parts/connection/connectionDialog/connectionDialogService.ts +++ b/src/sql/parts/connection/connectionDialog/connectionDialogService.ts @@ -153,6 +153,9 @@ export class ConnectionDialogService implements IConnectionDialogService { } else { this._connectionManagementService.cancelConnection(this._model); } + if (params && params.input && params.input.onConnectCanceled) { + params.input.onConnectCanceled(); + } this._connectionDialog.resetConnection(); this._connecting = false; } diff --git a/src/sql/parts/editData/common/editDataInput.ts b/src/sql/parts/editData/common/editDataInput.ts index 833337ffec..e69d3e465d 100644 --- a/src/sql/parts/editData/common/editDataInput.ts +++ b/src/sql/parts/editData/common/editDataInput.ts @@ -175,6 +175,9 @@ export class EditDataInput extends EditorInput implements IConnectableInput { } } + public onConnectCanceled(): void { + } + public onConnectSuccess(params?: INewConnectionParams): void { let rowLimit: number = undefined; let queryString: string = undefined; diff --git a/src/sql/parts/objectExplorer/viewlet/treeUpdateUtils.ts b/src/sql/parts/objectExplorer/viewlet/treeUpdateUtils.ts index 7a7f54b18b..332ef93a07 100644 --- a/src/sql/parts/objectExplorer/viewlet/treeUpdateUtils.ts +++ b/src/sql/parts/objectExplorer/viewlet/treeUpdateUtils.ts @@ -130,14 +130,16 @@ export class TreeUpdateUtils { if (tree) { // Show the spinner in OE by adding the 'loading' trait to the connection, and set up callbacks to hide the spinner tree.addTraits('loading', [connection]); + let rejectOrCancelCallback = () => { + tree.collapse(connection); + tree.removeTraits('loading', [connection]); + }; callbacks = { onConnectStart: undefined, - onConnectReject: () => { - tree.collapse(connection); - tree.removeTraits('loading', [connection]); - }, + onConnectReject: rejectOrCancelCallback, onConnectSuccess: () => tree.removeTraits('loading', [connection]), - onDisconnect: undefined + onDisconnect: undefined, + onConnectCanceled: rejectOrCancelCallback, }; } connectionManagementService.connect(connection, undefined, options, callbacks).then(result => { diff --git a/src/sql/parts/query/common/queryInput.ts b/src/sql/parts/query/common/queryInput.ts index bf430b32a0..50ee9f2b94 100644 --- a/src/sql/parts/query/common/queryInput.ts +++ b/src/sql/parts/query/common/queryInput.ts @@ -225,6 +225,9 @@ export class QueryInput extends EditorInput implements IEncodingSupport, IConnec this._updateTaskbar.fire(); } + public onConnectCanceled(): void { + } + public onConnectSuccess(params?: INewConnectionParams): void { this._runQueryEnabled = true; this._connectEnabled = false; diff --git a/src/sqltest/parts/connection/connectionDialogService.test.ts b/src/sqltest/parts/connection/connectionDialogService.test.ts index d04e8504f4..f660f9e7d1 100644 --- a/src/sqltest/parts/connection/connectionDialogService.test.ts +++ b/src/sqltest/parts/connection/connectionDialogService.test.ts @@ -56,7 +56,8 @@ suite('ConnectionDialogService tests', () => { onConnectStart: undefined, onConnectSuccess: undefined, onConnectReject: undefined, - onDisconnect: undefined + onDisconnect: undefined, + onConnectCanceled: undefined }, runQueryOnCompletion: undefined, querySelection: undefined diff --git a/src/sqltest/parts/connection/connectionManagementService.test.ts b/src/sqltest/parts/connection/connectionManagementService.test.ts index 08797fab38..4594b059cd 100644 --- a/src/sqltest/parts/connection/connectionManagementService.test.ts +++ b/src/sqltest/parts/connection/connectionManagementService.test.ts @@ -259,6 +259,7 @@ suite('SQL ConnectionManagementService tests', () => { onConnectStart: undefined, onDisconnect: undefined, onConnectSuccess: undefined, + onConnectCanceled: undefined, uri: 'Editor Uri' }, runQueryOnCompletion: RunQueryOnConnectionMode.executeQuery @@ -279,6 +280,7 @@ suite('SQL ConnectionManagementService tests', () => { onConnectStart: undefined, onDisconnect: undefined, onConnectSuccess: undefined, + onConnectCanceled: undefined, uri: 'Editor Uri' }, runQueryOnCompletion: RunQueryOnConnectionMode.executeQuery @@ -348,6 +350,7 @@ suite('SQL ConnectionManagementService tests', () => { onConnectReject: undefined, onConnectStart: undefined, onDisconnect: undefined, + onConnectCanceled: undefined, uri: uri }, querySelection: undefined, @@ -661,6 +664,7 @@ suite('SQL ConnectionManagementService tests', () => { onConnectReject: undefined, onConnectStart: undefined, onDisconnect: undefined, + onConnectCanceled: undefined, uri: uri }, querySelection: undefined,