Allow data explorer to use connect (#5564)

* wip

* handle save password; get correct profile

* ensure resolve is being called

* fix tests

* fix more tests
This commit is contained in:
Anthony Dresser
2019-05-23 11:44:18 -07:00
committed by GitHub
parent 5e8a52bcc0
commit aae1480e4f
15 changed files with 87 additions and 50 deletions

View File

@@ -158,7 +158,7 @@ export class AddServerAction extends Action {
saveProfile: true,
id: element.id
};
this._connectionManagementService.showConnectionDialog(undefined, connection);
this._connectionManagementService.showConnectionDialog(undefined, undefined, connection);
return Promise.resolve(true);
}
}

View File

@@ -48,12 +48,23 @@ export class OEShimService extends Disposable implements IOEShimService {
let connProfile = new ConnectionProfile(this.capabilities, node.payload);
connProfile.saveProfile = false;
if (this.cm.providerRegistered(providerId)) {
let userProfile = await this.cd.openDialogAndWait(this.cm, { connectionType: ConnectionType.default, showDashboard: false }, connProfile, undefined, false);
if (userProfile) {
connProfile = new ConnectionProfile(this.capabilities, userProfile);
} else {
return Promise.reject('User canceled');
}
await new Promise(async (resolve, reject) => {
await this.cm.connect(connProfile, undefined,
{ showConnectionDialogOnError: true, showFirewallRuleOnError: true, saveTheConnection: false, showDashboard: false, params: undefined },
{
onConnectSuccess: async (e, profile) => {
let existingConnection = this.cm.findExistingConnection(profile);
connProfile = new ConnectionProfile(this.capabilities, await this.cm.addSavedPassword(existingConnection));
resolve();
},
onConnectCanceled: () => {
reject('User canceled');
},
onConnectReject: undefined,
onConnectStart: undefined,
onDisconnect: undefined
});
});
}
let sessionResp = await this.oe.createNewSession(providerId, connProfile);
let disp = this.oe.onUpdateObjectExplorerNodes(e => {

View File

@@ -65,6 +65,7 @@ export class ConnectionDialogService implements IConnectionDialogService {
private _connectionControllerMap: { [providerDisplayName: string]: IConnectionComponentController } = {};
private _model: ConnectionProfile;
private _params: INewConnectionParams;
private _options: IConnectionCompletionOptions;
private _inputModel: IConnectionProfile;
private _providerNameToDisplayNameMap: { [providerDisplayName: string]: string } = {};
private _providerTypes: string[] = [];
@@ -239,7 +240,7 @@ export class ConnectionDialogService implements IConnectionDialogService {
if (fromEditor && params && params.input) {
uri = params.input.uri;
}
let options: IConnectionCompletionOptions = {
let options: IConnectionCompletionOptions = this._options || {
params: params,
saveTheConnection: true,
showDashboard: params && params.showDashboard !== undefined ? params.showDashboard : !fromEditor,
@@ -393,10 +394,12 @@ export class ConnectionDialogService implements IConnectionDialogService {
connectionManagementService: IConnectionManagementService,
params?: INewConnectionParams,
model?: IConnectionProfile,
connectionResult?: IConnectionResult): Thenable<void> {
connectionResult?: IConnectionResult,
connectionOptions?: IConnectionCompletionOptions): Thenable<void> {
this._connectionManagementService = connectionManagementService;
this._options = connectionOptions;
this._params = params;
this._inputModel = model;
return new Promise<void>((resolve, reject) => {

View File

@@ -4,7 +4,7 @@
*--------------------------------------------------------------------------------------------*/
import { createDecorator } from 'vs/platform/instantiation/common/instantiation';
import { INewConnectionParams, IConnectionResult, IConnectionManagementService } from 'sql/platform/connection/common/connectionManagement';
import { INewConnectionParams, IConnectionResult, IConnectionManagementService, IConnectionCompletionOptions } from 'sql/platform/connection/common/connectionManagement';
import { IConnectionProfile } from 'sql/platform/connection/common/interfaces';
export const IConnectionDialogService = createDecorator<IConnectionDialogService>('connectionDialogService');
@@ -13,7 +13,7 @@ export interface IConnectionDialogService {
/**
* Opens the connection dialog and returns the promise for successfully opening the dialog
*/
showDialog(connectionManagementService: IConnectionManagementService, params: INewConnectionParams, model: IConnectionProfile, connectionResult?: IConnectionResult): Thenable<void>;
showDialog(connectionManagementService: IConnectionManagementService, params: INewConnectionParams, model: IConnectionProfile, connectionResult?: IConnectionResult, connectionOptions?: IConnectionCompletionOptions): Thenable<void>;
/**
* Opens the connection dialog and returns the promise when connection is made