From 354ed227062905d19ecae011e23f72068e974bc5 Mon Sep 17 00:00:00 2001 From: kisantia <31145923+kisantia@users.noreply.github.com> Date: Sat, 4 May 2019 09:40:53 +1200 Subject: [PATCH] Fix #5314: schema compare doesn't always open with correct default connection (#5315) * fix schema compare default connection when there are multiple connections --- .../src/dialogs/schemaCompareDialog.ts | 30 +++++++++++++++++-- 1 file changed, 27 insertions(+), 3 deletions(-) diff --git a/extensions/schema-compare/src/dialogs/schemaCompareDialog.ts b/extensions/schema-compare/src/dialogs/schemaCompareDialog.ts index 02f06adbae..945d46cbeb 100644 --- a/extensions/schema-compare/src/dialogs/schemaCompareDialog.ts +++ b/extensions/schema-compare/src/dialogs/schemaCompareDialog.ts @@ -26,6 +26,7 @@ const SchemaCompareLabel: string = localize('schemaCompare.dialogTitle', 'Schema export class SchemaCompareDialog { public dialog: azdata.window.Dialog; + public dialogName: string; private schemaCompareTab: azdata.window.DialogTab; private sourceDacpacComponent: azdata.FormComponent; private sourceTextBox: azdata.InputBoxComponent; @@ -47,7 +48,7 @@ export class SchemaCompareDialog { private sourceIsDacpac: boolean; private targetIsDacpac: boolean; private database: string; - public dialogName: string; + private connectionId: string; protected initializeDialog(): void { this.schemaCompareTab = azdata.window.createTab(SchemaCompareLabel); @@ -55,10 +56,17 @@ export class SchemaCompareDialog { this.dialog.content = [this.schemaCompareTab]; } - public openDialog(p: any, dialogName?: string): void { - let profile = p ? p.connectionProfile : undefined; + public async openDialog(context: any, dialogName?: string): Promise { + let profile = context ? context.connectionProfile : undefined; if (profile) { this.database = profile.databaseName; + this.connectionId = profile.id; + } else { + let connection = await azdata.connection.getCurrentConnection(); + if (connection) { + this.connectionId = connection.connectionId; + this.database = undefined; + } } let event = dialogName ? dialogName : null; @@ -396,7 +404,16 @@ export class SchemaCompareDialog { return undefined; } + let count = -1; + let idx = -1; let values = cons.map(c => { + count++; + + if (c.connectionId === this.connectionId) { + idx = count; + } + + let db = c.options.databaseDisplayName; let usr = c.options.user; let srv = c.options.server; @@ -412,6 +429,13 @@ export class SchemaCompareDialog { }; }); + // move server of current connection to the top of the list so it is the default + if (idx >= 1) { + let tmp = values[0]; + values[0] = values[idx]; + values[idx] = tmp; + } + return values; }