Actually refresh the treeview when updating SARIF context value
This commit is contained in:
committed by
Andrew Eisenberg
parent
f4775954b6
commit
5244a1c3b0
@@ -43,7 +43,7 @@ import { spawnIdeServer } from './ide-server';
|
||||
import { InterfaceManager } from './interface';
|
||||
import { WebviewReveal } from './interface-utils';
|
||||
import { ideServerLogger, logger, queryServerLogger } from './logging';
|
||||
import { QueryHistoryManager, updateTreeItemContextValue } from './query-history';
|
||||
import { QueryHistoryManager } from './query-history';
|
||||
import { CompletedQuery } from './query-results';
|
||||
import * as qsClient from './queryserver-client';
|
||||
import { displayQuickQuery } from './quick-query';
|
||||
@@ -409,7 +409,7 @@ async function activateWithInstalledDistribution(
|
||||
// The call to showResults potentially creates SARIF file;
|
||||
// Update the tree item context value to allow viewing that
|
||||
// SARIF file from context menu.
|
||||
await updateTreeItemContextValue(item);
|
||||
await qhm.updateTreeItemContextValue(item);
|
||||
} catch (e) {
|
||||
if (e instanceof UserCancellationException) {
|
||||
if (e.silent) {
|
||||
|
||||
@@ -50,20 +50,14 @@ const SHOW_QUERY_TEXT_QUICK_EVAL_MSG = `\
|
||||
*/
|
||||
const FAILED_QUERY_HISTORY_ITEM_ICON = 'media/red-x.svg';
|
||||
|
||||
export async function updateTreeItemContextValue(element: CompletedQuery): Promise<void> {
|
||||
// Mark this query history item according to whether it has a
|
||||
// SARIF file so that we can make context menu items conditionally
|
||||
// available.
|
||||
element.treeItem!.contextValue = (await element.query.hasInterpretedResults())
|
||||
? 'interpretedResultsItem'
|
||||
: 'rawResultsItem';
|
||||
interface QueryHistoryDataProvider extends vscode.TreeDataProvider<CompletedQuery> {
|
||||
updateTreeItemContextValue(element: CompletedQuery): Promise<void>;
|
||||
}
|
||||
|
||||
/**
|
||||
* Tree data provider for the query history view.
|
||||
*/
|
||||
class HistoryTreeDataProvider
|
||||
implements vscode.TreeDataProvider<CompletedQuery> {
|
||||
class HistoryTreeDataProvider implements QueryHistoryDataProvider {
|
||||
/**
|
||||
* XXX: This idiom for how to get a `.fire()`-able event emitter was
|
||||
* cargo culted from another vscode extension. It seems rather
|
||||
@@ -85,6 +79,17 @@ class HistoryTreeDataProvider
|
||||
|
||||
constructor(private ctx: ExtensionContext) { }
|
||||
|
||||
async updateTreeItemContextValue(element: CompletedQuery): Promise<void> {
|
||||
// Mark this query history item according to whether it has a
|
||||
// SARIF file so that we can make context menu items conditionally
|
||||
// available.
|
||||
const hasResults = await element.query.hasInterpretedResults();
|
||||
element.treeItem!.contextValue = hasResults
|
||||
? 'interpretedResultsItem'
|
||||
: 'rawResultsItem';
|
||||
this.refresh();
|
||||
}
|
||||
|
||||
async getTreeItem(element: CompletedQuery): Promise<vscode.TreeItem> {
|
||||
if (element.treeItem !== undefined)
|
||||
return element.treeItem;
|
||||
@@ -98,7 +103,7 @@ class HistoryTreeDataProvider
|
||||
};
|
||||
|
||||
element.treeItem = it;
|
||||
updateTreeItemContextValue(element);
|
||||
this.updateTreeItemContextValue(element);
|
||||
|
||||
if (!element.didRunSuccessfully) {
|
||||
it.iconPath = path.join(
|
||||
@@ -623,4 +628,8 @@ the file in the file explorer and dragging it into the workspace.`
|
||||
this.compareWithItem = undefined;
|
||||
}
|
||||
}
|
||||
|
||||
async updateTreeItemContextValue(element: CompletedQuery): Promise<void> {
|
||||
this.treeDataProvider.updateTreeItemContextValue(element);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user