Skip to content

Commit 5244a1c

Browse files
jcreedcmuaeisenberg
authored andcommitted
Actually refresh the treeview when updating SARIF context value
1 parent f477595 commit 5244a1c

2 files changed

Lines changed: 21 additions & 12 deletions

File tree

extensions/ql-vscode/src/extension.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ import { spawnIdeServer } from './ide-server';
4343
import { InterfaceManager } from './interface';
4444
import { WebviewReveal } from './interface-utils';
4545
import { ideServerLogger, logger, queryServerLogger } from './logging';
46-
import { QueryHistoryManager, updateTreeItemContextValue } from './query-history';
46+
import { QueryHistoryManager } from './query-history';
4747
import { CompletedQuery } from './query-results';
4848
import * as qsClient from './queryserver-client';
4949
import { displayQuickQuery } from './quick-query';
@@ -409,7 +409,7 @@ async function activateWithInstalledDistribution(
409409
// The call to showResults potentially creates SARIF file;
410410
// Update the tree item context value to allow viewing that
411411
// SARIF file from context menu.
412-
await updateTreeItemContextValue(item);
412+
await qhm.updateTreeItemContextValue(item);
413413
} catch (e) {
414414
if (e instanceof UserCancellationException) {
415415
if (e.silent) {

extensions/ql-vscode/src/query-history.ts

Lines changed: 19 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -50,20 +50,14 @@ const SHOW_QUERY_TEXT_QUICK_EVAL_MSG = `\
5050
*/
5151
const FAILED_QUERY_HISTORY_ITEM_ICON = 'media/red-x.svg';
5252

53-
export async function updateTreeItemContextValue(element: CompletedQuery): Promise<void> {
54-
// Mark this query history item according to whether it has a
55-
// SARIF file so that we can make context menu items conditionally
56-
// available.
57-
element.treeItem!.contextValue = (await element.query.hasInterpretedResults())
58-
? 'interpretedResultsItem'
59-
: 'rawResultsItem';
53+
interface QueryHistoryDataProvider extends vscode.TreeDataProvider<CompletedQuery> {
54+
updateTreeItemContextValue(element: CompletedQuery): Promise<void>;
6055
}
6156

6257
/**
6358
* Tree data provider for the query history view.
6459
*/
65-
class HistoryTreeDataProvider
66-
implements vscode.TreeDataProvider<CompletedQuery> {
60+
class HistoryTreeDataProvider implements QueryHistoryDataProvider {
6761
/**
6862
* XXX: This idiom for how to get a `.fire()`-able event emitter was
6963
* cargo culted from another vscode extension. It seems rather
@@ -85,6 +79,17 @@ class HistoryTreeDataProvider
8579

8680
constructor(private ctx: ExtensionContext) { }
8781

82+
async updateTreeItemContextValue(element: CompletedQuery): Promise<void> {
83+
// Mark this query history item according to whether it has a
84+
// SARIF file so that we can make context menu items conditionally
85+
// available.
86+
const hasResults = await element.query.hasInterpretedResults();
87+
element.treeItem!.contextValue = hasResults
88+
? 'interpretedResultsItem'
89+
: 'rawResultsItem';
90+
this.refresh();
91+
}
92+
8893
async getTreeItem(element: CompletedQuery): Promise<vscode.TreeItem> {
8994
if (element.treeItem !== undefined)
9095
return element.treeItem;
@@ -98,7 +103,7 @@ class HistoryTreeDataProvider
98103
};
99104

100105
element.treeItem = it;
101-
updateTreeItemContextValue(element);
106+
this.updateTreeItemContextValue(element);
102107

103108
if (!element.didRunSuccessfully) {
104109
it.iconPath = path.join(
@@ -623,4 +628,8 @@ the file in the file explorer and dragging it into the workspace.`
623628
this.compareWithItem = undefined;
624629
}
625630
}
631+
632+
async updateTreeItemContextValue(element: CompletedQuery): Promise<void> {
633+
this.treeDataProvider.updateTreeItemContextValue(element);
634+
}
626635
}

0 commit comments

Comments
 (0)