@@ -50,20 +50,14 @@ const SHOW_QUERY_TEXT_QUICK_EVAL_MSG = `\
5050 */
5151const 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