diff --git a/src/sql/workbench/services/restore/browser/restoreDialog.ts b/src/sql/workbench/services/restore/browser/restoreDialog.ts index 32cfab331d..06b428970a 100644 --- a/src/sql/workbench/services/restore/browser/restoreDialog.ts +++ b/src/sql/workbench/services/restore/browser/restoreDialog.ts @@ -634,9 +634,12 @@ export class RestoreDialog extends Modal { } private onSourceDatabaseChanged(selectedDatabase: string) { - this.viewModel.sourceDatabaseName = selectedDatabase; - this.viewModel.selectedBackupSets = undefined; - this.validateRestore(true); + // This check is to avoid any unnecessary even firing (to remove flickering) + if (this.viewModel.sourceDatabaseName !== selectedDatabase) { + this.viewModel.sourceDatabaseName = selectedDatabase; + this.viewModel.selectedBackupSets = undefined; + this.validateRestore(true); + } } private onRestoreFromChanged(selectedRestoreFrom: string) { diff --git a/src/sql/workbench/services/restore/browser/restoreServiceImpl.ts b/src/sql/workbench/services/restore/browser/restoreServiceImpl.ts index d389b615ab..9e6e057cae 100644 --- a/src/sql/workbench/services/restore/browser/restoreServiceImpl.ts +++ b/src/sql/workbench/services/restore/browser/restoreServiceImpl.ts @@ -319,8 +319,9 @@ export class RestoreDialogController implements IRestoreDialogController { if (this._currentProvider === ConnectionConstants.mssqlProviderName) { let restoreDialog = this._restoreDialogs[this._currentProvider] as RestoreDialog; - restoreDialog.viewModel.resetRestoreOptions(connection.databaseName!); this.getMssqlRestoreConfigInfo().then(() => { + // database list is filled only after getMssqlRestoreConfigInfo() calling before will always set to empty value + restoreDialog.viewModel.resetRestoreOptions(connection.databaseName!, restoreDialog.viewModel.databaseList); restoreDialog.open(connection.serverName, this._ownerUri!); restoreDialog.validateRestore(); }, restoreConfigError => { diff --git a/src/sql/workbench/services/restore/browser/restoreViewModel.ts b/src/sql/workbench/services/restore/browser/restoreViewModel.ts index d9fbaa3327..ebc3e0013b 100644 --- a/src/sql/workbench/services/restore/browser/restoreViewModel.ts +++ b/src/sql/workbench/services/restore/browser/restoreViewModel.ts @@ -245,13 +245,13 @@ export class RestoreViewModel { /** * Reset restore options to the default value */ - public resetRestoreOptions(databaseName: string): void { + public resetRestoreOptions(databaseName: string, databaseList: string[] = []): void { this.sourceDatabaseName = databaseName ? databaseName : ''; this.updateTargetDatabaseName(databaseName); - this.updateSourceDatabaseNames([], this.sourceDatabaseName); + this.databaseList = databaseList; + this.updateSourceDatabaseNames(this.databaseList, this.sourceDatabaseName); this.updateFilePath(''); this.updateLastBackupTaken(''); - this.databaseList = []; this.selectedBackupSets = undefined; for (let key in this._optionsMap) { this._optionsMap[key].defaultValue = this.getDisplayValue(this._optionsMap[key].optionMetadata, this._optionsMap[key].optionMetadata.defaultValue);