From 54ba2bcba69b47d1a25213b93c38ed51a7fc2758 Mon Sep 17 00:00:00 2001 From: Matheus Teixeira Date: Mon, 20 May 2019 00:34:15 -0300 Subject: [PATCH 1/3] feature/results-per-connection: Per connection results view --- .../plugins/connection-manager/extension.ts | 22 ++++++------ .../connection-manager/screens/provider.ts | 28 ++++++--------- .../connection-manager/screens/results.ts | 35 ++++++++++++++++--- .../connection-manager/screens/settings.ts | 9 +++-- packages/ui/screens/Results/ResultsTable.tsx | 4 +-- 5 files changed, 61 insertions(+), 37 deletions(-) diff --git a/packages/plugins/connection-manager/extension.ts b/packages/plugins/connection-manager/extension.ts index 547d1c862..8e9b250df 100644 --- a/packages/plugins/connection-manager/extension.ts +++ b/packages/plugins/connection-manager/extension.ts @@ -6,7 +6,7 @@ import SQLTools, { RequestHandler } from '@sqltools/core/plugin-api'; import { getConnectionDescription, getConnectionId, isEmpty } from '@sqltools/core/utils'; import { getSelectedText, quickPick, readInput } from '@sqltools/core/utils/vscode'; import { SidebarConnection, SidebarTableOrView, ConnectionExplorer } from '@sqltools/plugins/connection-manager/explorer'; -import ResultsWebview from '@sqltools/plugins/connection-manager/screens/results'; +import ResultsWebviewManager from '@sqltools/plugins/connection-manager/screens/results'; import SettingsWebview from '@sqltools/plugins/connection-manager/screens/settings'; import { commands, QuickPickItem, ExtensionContext, StatusBarAlignment, StatusBarItem, window, workspace, ConfigurationTarget, Uri, TextEditor } from 'vscode'; import { ConnectionDataUpdatedRequest, ConnectRequest, DisconnectRequest, GetConnectionDataRequest, GetConnectionPasswordRequest, GetConnectionsRequest, RefreshAllRequest, RunCommandRequest } from './contracts'; @@ -15,7 +15,7 @@ import CodeLensPlugin from '../codelens/extension'; export default class ConnectionManagerPlugin implements SQLTools.ExtensionPlugin { public client: SQLTools.LanguageClientInterface; - public resultsWebview: ResultsWebview; + public resultsWebview: ResultsWebviewManager; public settingsWebview: SettingsWebview; public statusBar: StatusBarItem;; private context: ExtensionContext; @@ -47,11 +47,9 @@ export default class ConnectionManagerPlugin implements SQLTools.ExtensionPlugin let limit = 50; if (ConfigManager.results && ConfigManager.results.limit) { limit = ConfigManager.results.limit; - } else if ((ConfigManager).previewLimit) { // @TODO: this is deprecated! Will be removed. - limit = (ConfigManager).previewLimit; } const payload = await this._runConnectionCommandWithArgs('showRecords', table, limit); - this.resultsWebview.updateResults(payload); + this.resultsWebview.get(payload[0].connId || this.explorer.getActive().id).updateResults(payload); } catch (e) { this.errorHandler('Error while showing table records', e); @@ -63,7 +61,7 @@ export default class ConnectionManagerPlugin implements SQLTools.ExtensionPlugin const table = await this._getTableName(node); this._openResultsWebview(); const payload = await this._runConnectionCommandWithArgs('describeTable', table); - this.resultsWebview.updateResults(payload); + this.resultsWebview.get(payload[0].connId || this.explorer.getActive().id).updateResults(payload); } catch (e) { this.errorHandler('Error while describing table records', e); } @@ -144,7 +142,7 @@ export default class ConnectionManagerPlugin implements SQLTools.ExtensionPlugin await this._connect(); this._openResultsWebview(); const payload = await this._runConnectionCommandWithArgs('query', query); - this.resultsWebview.updateResults(payload); + this.resultsWebview.get(payload[0].connId || this.explorer.getActive().id).updateResults(payload); return payload; } catch (e) { this.errorHandler('Error fetching records.', e); @@ -158,7 +156,7 @@ export default class ConnectionManagerPlugin implements SQLTools.ExtensionPlugin private ext_showOutputChannel = () => (console).show(); - private ext_saveResults = async (filetype: 'csv' | 'json') => { + private ext_saveResults = async (filetype: 'csv' | 'json', connId?: string) => { filetype = typeof filetype === 'string' ? filetype : undefined; let mode: any = filetype || ConfigManager.defaultExportType; if (mode === 'prompt') { @@ -172,7 +170,7 @@ export default class ConnectionManagerPlugin implements SQLTools.ExtensionPlugin if (!mode) return; - return this.resultsWebview.saveResults(mode); + return this.resultsWebview.get(connId || this.explorer.getActive().id).saveResults(mode); } private ext_openAddConnectionScreen = () => { @@ -278,8 +276,8 @@ export default class ConnectionManagerPlugin implements SQLTools.ExtensionPlugin return this._pickTable(conn, 'value'); } - private _openResultsWebview() { - this.resultsWebview.show(); + private _openResultsWebview(connId?: string) { + this.resultsWebview.get(connId || this.explorer.getActive().id).show(); } private _connect = async (force = false): Promise => { if (!force && this.explorer.getActive()) { @@ -453,7 +451,7 @@ export default class ConnectionManagerPlugin implements SQLTools.ExtensionPlugin // extension stuff this.context.subscriptions.push( - (this.resultsWebview = new ResultsWebview(this.context, this.client)), + (this.resultsWebview = new ResultsWebviewManager(this.context, this.client)), (this.settingsWebview = new SettingsWebview(this.context)), this._updateStatusBar(), workspace.onDidCloseTextDocument(this.ext_refreshAll), diff --git a/packages/plugins/connection-manager/screens/provider.ts b/packages/plugins/connection-manager/screens/provider.ts index 3eccb6fc7..8b90d19f5 100644 --- a/packages/plugins/connection-manager/screens/provider.ts +++ b/packages/plugins/connection-manager/screens/provider.ts @@ -1,13 +1,18 @@ -import path from 'path'; import { Uri, commands, Disposable, EventEmitter, ExtensionContext, ViewColumn, WebviewPanel, window } from 'vscode'; export default abstract class WebviewProvider implements Disposable { public disposeEvent: EventEmitter = new EventEmitter(); - public get onDidDispose() { return this.disposeEvent.event; } + public get onDidDispose() { + return this.disposeEvent.event; + } public get visible() { return this.panel === undefined ? false : this.panel.visible; } protected cssVariables: { [name: string]: string }; private get baseHtml(): string { const cssVariables = Object.keys(this.cssVariables || {}).map(k => `--sqltools-${k}: ${this.cssVariables[k]}`).join(';'); + const extRoot = Uri.file(this.context.asAbsolutePath('.')) + .with({ scheme: 'vscode-resource' }) + .toString(); + return ` @@ -20,8 +25,8 @@ export default abstract class WebviewProvider implements Disposable
- - + + `; } @@ -31,13 +36,8 @@ export default abstract class WebviewProvider implements Disposable private panel: WebviewPanel; private disposables: Disposable[] = []; private messageCb; - private iconsPath: Uri; - private viewsPath: Uri; - public constructor(private context: ExtensionContext) { - this.iconsPath = Uri.file(path.join(context.extensionPath, 'icons')).with({ scheme: 'vscode-resource' }) - this.viewsPath = Uri.file(path.join(context.extensionPath, 'ui')).with({ scheme: 'vscode-resource' }) - } + public constructor(private context: ExtensionContext, private iconsPath: Uri, private viewsPath: Uri) {} public preserveFocus = true; public wereToShow = ViewColumn.One; public show() { @@ -61,13 +61,7 @@ export default abstract class WebviewProvider implements Disposable this.setPreviewActiveContext(webviewPanel.active); })); this.disposables.push(this.panel.onDidDispose(this.dispose, null, this.disposables)); - this.panel.webview.html = (this.html || this.baseHtml) - .replace(/{{id}}/g, this.id) - .replace( - /{{extRoot}}/g, - Uri.file(this.context.asAbsolutePath('.')) - .with({ scheme: 'vscode-resource' }) - .toString()); + this.panel.webview.html = this.html || this.baseHtml; } this.updatePanelName(); diff --git a/packages/plugins/connection-manager/screens/results.ts b/packages/plugins/connection-manager/screens/results.ts index f6240d5e0..3e8c4384e 100644 --- a/packages/plugins/connection-manager/screens/results.ts +++ b/packages/plugins/connection-manager/screens/results.ts @@ -2,16 +2,17 @@ import SQLTools, { DatabaseInterface } from '@sqltools/core/plugin-api'; import { SaveResultsRequest } from '@sqltools/plugins/connection-manager/contracts'; import WebviewProvider from '@sqltools/plugins/connection-manager/screens/provider'; import QueryResultsState from '@sqltools/ui/screens/Results/State'; -import vscode from 'vscode'; +import vscode, { Uri } from 'vscode'; import ConfigManager from '@sqltools/core/config-manager'; import { getNameFromId } from '@sqltools/core/utils'; +import path from 'path'; -export default class ResultsWebview extends WebviewProvider { +class ResultsWebview extends WebviewProvider { protected id: string = 'Results'; protected title: string = 'SQLTools Results'; - constructor(context: vscode.ExtensionContext, private client: SQLTools.LanguageClientInterface) { - super(context); + constructor(context: vscode.ExtensionContext, private client: SQLTools.LanguageClientInterface, iconsPath: Uri, viewsPath: Uri) { + super(context, iconsPath, viewsPath); } public get cssVariables() { @@ -74,3 +75,29 @@ export default class ResultsWebview extends WebviewProvider { wereToShow = vscode.ViewColumn.Active; preserveFocus = false; } + +export default class ResultsWebviewManager { + private resultsMap: { [id: string]: ResultsWebview } = {}; + private iconsPath: Uri; + private viewsPath: Uri; + + constructor(private context: vscode.ExtensionContext, private client: SQLTools.LanguageClientInterface) { + this.iconsPath = Uri.file(path.join(this.context.extensionPath, 'icons')).with({ scheme: 'vscode-resource' }); + this.viewsPath = Uri.file(path.join(this.context.extensionPath, 'ui')).with({ scheme: 'vscode-resource' }); + } + + dispose() { + return Promise.all(Object.keys(this.resultsMap).map(id => this.resultsMap[id].dispose())); + } + + private createForId(connId: string) { + this.resultsMap[connId] = new ResultsWebview(this.context, this.client, this.iconsPath, this.viewsPath); + return this.resultsMap[connId]; + } + + get(connId: string) { + if (!connId) throw new Error('Missing connection id to create results view'); + + return this.resultsMap[connId] || this.createForId(connId); + } +} \ No newline at end of file diff --git a/packages/plugins/connection-manager/screens/settings.ts b/packages/plugins/connection-manager/screens/settings.ts index 162a55521..1ba10a978 100644 --- a/packages/plugins/connection-manager/screens/settings.ts +++ b/packages/plugins/connection-manager/screens/settings.ts @@ -1,14 +1,19 @@ import { EXT_NAME } from '@sqltools/core/constants'; import { getConnectionId } from '@sqltools/core/utils'; import WebviewProvider from '@sqltools/plugins/connection-manager/screens/provider'; -import { commands, ExtensionContext } from 'vscode'; +import { commands, ExtensionContext, Uri } from 'vscode'; +import path from 'path'; export default class SettingsWebview extends WebviewProvider { protected id: string = 'Settings'; protected title: string = 'SQLTools Settings'; constructor(context: ExtensionContext) { - super(context); + super( + context, + Uri.file(path.join(context.extensionPath, 'icons')).with({ scheme: 'vscode-resource' }), + Uri.file(path.join(context.extensionPath, 'ui')).with({ scheme: 'vscode-resource' }) + ); this.setMessageCallback(({ action, payload }) => { switch (action) { case 'createConnection': diff --git a/packages/ui/screens/Results/ResultsTable.tsx b/packages/ui/screens/Results/ResultsTable.tsx index 36768f20e..228a91830 100644 --- a/packages/ui/screens/Results/ResultsTable.tsx +++ b/packages/ui/screens/Results/ResultsTable.tsx @@ -313,7 +313,7 @@ export default class ResultsTable extends React.PureComponent Date: Mon, 20 May 2019 00:42:42 -0300 Subject: [PATCH 2/3] feature/results-per-connection: Fix languageserver version to be exact --- packages/core/package.json | 4 +- packages/extension/package.json | 2 +- packages/language-server/package.json | 2 +- yarn.lock | 57 ++++++++++++++++----------- 4 files changed, 37 insertions(+), 28 deletions(-) diff --git a/packages/core/package.json b/packages/core/package.json index 37c04076f..fddf8096b 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -14,8 +14,8 @@ "mysql": "^2.16.0", "pg": "^7.8.1", "vscode": "^1.1.30", - "vscode-languageclient": "^5.2.1", - "vscode-languageserver": "^5.3.0-next.1" + "vscode-languageclient": "5.2.1", + "vscode-languageserver": "5.2.1" }, "devDependencies": { "@types/command-exists": "^1.2.0", diff --git a/packages/extension/package.json b/packages/extension/package.json index 927893fd6..79f6a1c6e 100644 --- a/packages/extension/package.json +++ b/packages/extension/package.json @@ -900,6 +900,6 @@ "dependencies": { "@sqltools/core": "*", "@sqltools/plugins": "*", - "vscode-languageclient": "^5.2.1" + "vscode-languageclient": "5.2.1" } } diff --git a/packages/language-server/package.json b/packages/language-server/package.json index afd84ceba..e76f9830d 100644 --- a/packages/language-server/package.json +++ b/packages/language-server/package.json @@ -10,7 +10,7 @@ "@sqltools/core": "*", "@sqltools/plugins": "*", "redux": "^4.0.1", - "vscode-languageserver": "^5.3.0-next.1" + "vscode-languageserver": "5.2.1" }, "devDependencies": { "@babel/core": "7.4.4", diff --git a/yarn.lock b/yarn.lock index bb1a46f8f..56913e333 100644 --- a/yarn.lock +++ b/yarn.lock @@ -893,6 +893,20 @@ resolved "https://registry.yarnpkg.com/@types/command-exists/-/command-exists-1.2.0.tgz#d97e0ed10097090e4ab0367ed425b0312fad86f3" integrity sha512-ugsxEJfsCuqMLSuCD4PIJkp5Uk2z6TCMRCgYVuhRo5cYQY3+1xXTQkSlPtkpGHuvWMjS2KTeVQXxkXRACMbM6A== +"@types/events@*": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@types/events/-/events-3.0.0.tgz#2862f3f58a9a7f7c3e78d79f130dd4d71c25c2a7" + integrity sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g== + +"@types/glob@*": + version "7.1.1" + resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.1.tgz#aa59a1c6e3fbc421e07ccd31a944c30eba521575" + integrity sha512-1Bh06cbWJUHMC97acuD6UMG29nMt0Aqz1vF3guLfG+kHHJhy3AyohZFFxYk2f7Q1SQIrNwvncxAE0N/9s70F2w== + dependencies: + "@types/events" "*" + "@types/minimatch" "*" + "@types/node" "*" + "@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0": version "2.0.1" resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.1.tgz#42995b446db9a48a11a07ec083499a860e9138ff" @@ -930,6 +944,11 @@ resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.126.tgz#47cff3ea014aa083194f8ca3ec351136c3786613" integrity sha512-HxQ+wQnBtnL0LszZrVdMqWIlzZNyKuMLUb6swQ3mo6ysPqpAu7gfnapCQIi0B+Mrf0fNLZh8AWgJs2njejVasg== +"@types/minimatch@*": + version "3.0.3" + resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d" + integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA== + "@types/mssql@^4.0.12": version "4.0.13" resolved "https://registry.yarnpkg.com/@types/mssql/-/mssql-4.0.13.tgz#9450e67898c50908a0376f323eb92a42f60c147d" @@ -1015,6 +1034,14 @@ dependencies: redux "*" +"@types/rimraf@^2.0.2": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@types/rimraf/-/rimraf-2.0.2.tgz#7f0fc3cf0ff0ad2a99bb723ae1764f30acaf8b6e" + integrity sha512-Hm/bnWq0TCy7jmjeN5bKYij9vw5GrDFWME4IuxV08278NtU/VdGbzsBohcCUJ7+QMqmUq5hpRKB39HeQWJjztQ== + dependencies: + "@types/glob" "*" + "@types/node" "*" + "@types/source-map-support@^0.5.0": version "0.5.0" resolved "https://registry.yarnpkg.com/@types/source-map-support/-/source-map-support-0.5.0.tgz#40f47e68bc0bdf54d19dddad4550f521cdb9968c" @@ -7433,12 +7460,7 @@ vscode-jsonrpc@^4.0.0: resolved "https://registry.yarnpkg.com/vscode-jsonrpc/-/vscode-jsonrpc-4.0.0.tgz#a7bf74ef3254d0a0c272fab15c82128e378b3be9" integrity sha512-perEnXQdQOJMTDFNv+UF3h1Y0z4iSiaN9jIlb0OqIYgosPCZGYh/MCUlkFtV2668PL69lRDO32hmvL2yiidUYg== -vscode-jsonrpc@^4.1.0-next.2: - version "4.1.0-next.2" - resolved "https://registry.yarnpkg.com/vscode-jsonrpc/-/vscode-jsonrpc-4.1.0-next.2.tgz#3bd318910a48e631742b290975386e3dae685be3" - integrity sha512-GsBLjP9DxQ42yl1mW9GEIlnSc0+R8mfzhaebwmmTPEJjezD5SPoAo3DFrIAFZha9yvQ1nzZfZlhtVpGQmgxtXg== - -vscode-languageclient@^5.2.1: +vscode-languageclient@5.2.1: version "5.2.1" resolved "https://registry.yarnpkg.com/vscode-languageclient/-/vscode-languageclient-5.2.1.tgz#7cfc83a294c409f58cfa2b910a8cfeaad0397193" integrity sha512-7jrS/9WnV0ruqPamN1nE7qCxn0phkH5LjSgSp9h6qoJGoeAKzwKz/PF6M+iGA/aklx4GLZg1prddhEPQtuXI1Q== @@ -7454,30 +7476,17 @@ vscode-languageserver-protocol@3.14.1: vscode-jsonrpc "^4.0.0" vscode-languageserver-types "3.14.0" -vscode-languageserver-protocol@3.15.0-next.5: - version "3.15.0-next.5" - resolved "https://registry.yarnpkg.com/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.15.0-next.5.tgz#23afad3d28795f2235eda7a167e2fe0825b7c151" - integrity sha512-rR7Zo5WZTGSsE9lq7pPSgO+VMhVV8UVq6emrDoQ3x5dUyhLKB2/gbMkGKucQpsKGLtF/NuccCa+3jMsO788HjQ== - dependencies: - vscode-jsonrpc "^4.1.0-next.2" - vscode-languageserver-types "3.15.0-next.1" - vscode-languageserver-types@3.14.0: version "3.14.0" resolved "https://registry.yarnpkg.com/vscode-languageserver-types/-/vscode-languageserver-types-3.14.0.tgz#d3b5952246d30e5241592b6dde8280e03942e743" integrity sha512-lTmS6AlAlMHOvPQemVwo3CezxBp0sNB95KNPkqp3Nxd5VFEnuG1ByM0zlRWos0zjO3ZWtkvhal0COgiV1xIA4A== -vscode-languageserver-types@3.15.0-next.1: - version "3.15.0-next.1" - resolved "https://registry.yarnpkg.com/vscode-languageserver-types/-/vscode-languageserver-types-3.15.0-next.1.tgz#eddca4cf2a2547357006d4f0cc177ddc56043b65" - integrity sha512-R0kzmaI8gOGEoU7b9huYQAzgZzRQ/5Q8HKjsIUdfz0MjXcBZ4tr1ik1So1p1O5kGrI1VTCd22Fw/wI7ECGoIPw== - -vscode-languageserver@^5.3.0-next.1: - version "5.3.0-next.6" - resolved "https://registry.yarnpkg.com/vscode-languageserver/-/vscode-languageserver-5.3.0-next.6.tgz#33befcc3af7d615e1bdcd6ce5ffd017861df5f60" - integrity sha512-7DtEBFc0bkcIaKhhx5Q4ZvIkJ1PAtX0pqTnI6QyA14yLL1TfqSSoNRczamb9khpGbLyN5oje7kBJD1kiOvsM+Q== +vscode-languageserver@5.2.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/vscode-languageserver/-/vscode-languageserver-5.2.1.tgz#0d2feddd33f92aadf5da32450df498d52f6f14eb" + integrity sha512-GuayqdKZqAwwaCUjDvMTAVRPJOp/SLON3mJ07eGsx/Iq9HjRymhKWztX41rISqDKhHVVyFM+IywICyZDla6U3A== dependencies: - vscode-languageserver-protocol "3.15.0-next.5" + vscode-languageserver-protocol "3.14.1" vscode-uri "^1.0.6" vscode-test@^0.4.1: From 811cbe625f63cd34ee351c5ba6f3bd8b9c887833 Mon Sep 17 00:00:00 2001 From: Matheus Teixeira Date: Mon, 20 May 2019 00:57:40 -0300 Subject: [PATCH 3/3] feature/results-per-connection: Passing connId to saveResults --- .../plugins/connection-manager/extension.ts | 22 +++++++++---------- packages/ui/screens/Results/ResultsTable.tsx | 2 +- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/packages/plugins/connection-manager/extension.ts b/packages/plugins/connection-manager/extension.ts index 8e9b250df..8b3d21994 100644 --- a/packages/plugins/connection-manager/extension.ts +++ b/packages/plugins/connection-manager/extension.ts @@ -125,17 +125,17 @@ export default class ConnectionManagerPlugin implements SQLTools.ExtensionPlugin } } - private ext_executeQuery = async (query?: string, connName?: string) => { + private ext_executeQuery = async (query?: string, connNameOrId?: string) => { try { query = query || await getSelectedText('execute query'); - if (!connName) { - connName = (query.match(/@conn\s*(.+)$/) || [])[1]; + if (!connNameOrId) { + connNameOrId = (query.match(/@conn\s*(.+)$/) || [])[1]; } - if (connName && connName.trim()) { - connName = connName.trim(); - const conn = (this.getConnectionList() || []).find(c => c.name === connName); + if (connNameOrId && connNameOrId.trim()) { + connNameOrId = connNameOrId.trim(); + const conn = this.getConnectionList().find(c => getConnectionId(c) === connNameOrId || c.name === connNameOrId); if (!conn) { - throw new Error(`Trying to run query on '${connName}' but it does not exist.`) + throw new Error(`Trying to run query on '${connNameOrId}' but it does not exist.`) } await this._setConnection(conn); } @@ -399,17 +399,17 @@ export default class ConnectionManagerPlugin implements SQLTools.ExtensionPlugin } private getConnectionList(from?: ConfigurationTarget): ConnectionInterface[] { - if (!from) return workspace.getConfiguration(EXT_NAME.toLowerCase()).get('connections'); + if (!from) return workspace.getConfiguration(EXT_NAME.toLowerCase()).get('connections') || []; const config = workspace.getConfiguration(EXT_NAME.toLowerCase()).inspect('connections'); if (from === ConfigurationTarget.Global) { - return (config.globalValue || config.defaultValue); + return (config.globalValue || config.defaultValue) || []; } if (from === ConfigurationTarget.WorkspaceFolder) { - return (config.workspaceFolderValue || config.defaultValue); + return (config.workspaceFolderValue || config.defaultValue) || []; } - return (config.workspaceValue || config.defaultValue); + return (config.workspaceValue || config.defaultValue) || []; } private ext_attachFileToConnection = async (fileUri: Uri) => { diff --git a/packages/ui/screens/Results/ResultsTable.tsx b/packages/ui/screens/Results/ResultsTable.tsx index 228a91830..cc632aba6 100644 --- a/packages/ui/screens/Results/ResultsTable.tsx +++ b/packages/ui/screens/Results/ResultsTable.tsx @@ -304,7 +304,7 @@ export default class ResultsTable extends React.PureComponent