@@ -52,14 +52,10 @@ const SHOW_QUERY_TEXT_QUICK_EVAL_MSG = `\
5252 */
5353const FAILED_QUERY_HISTORY_ITEM_ICON = 'media/red-x.svg' ;
5454
55- interface QueryHistoryDataProvider extends vscode . TreeDataProvider < CompletedQuery > {
56- updateTreeItemContextValue ( element : CompletedQuery ) : Promise < void > ;
57- }
58-
5955/**
6056 * Tree data provider for the query history view.
6157 */
62- class HistoryTreeDataProvider extends DisposableObject implements QueryHistoryDataProvider {
58+ class HistoryTreeDataProvider extends DisposableObject {
6359 private _onDidChangeTreeData = super . push ( new vscode . EventEmitter < CompletedQuery | undefined > ( ) ) ;
6460
6561 readonly onDidChangeTreeData : vscode . Event < CompletedQuery | undefined > = this
@@ -82,37 +78,28 @@ class HistoryTreeDataProvider extends DisposableObject implements QueryHistoryDa
8278 ) ;
8379 }
8480
85- async updateTreeItemContextValue ( element : CompletedQuery ) : Promise < void > {
86- // Mark this query history item according to whether it has a
87- // SARIF file so that we can make context menu items conditionally
88- // available.
89- const hasResults = await element . query . hasInterpretedResults ( ) ;
90- element . treeItem ! . contextValue = hasResults
91- ? 'interpretedResultsItem'
92- : 'rawResultsItem' ;
93- this . refresh ( ) ;
94- }
95-
9681 async getTreeItem ( element : CompletedQuery ) : Promise < vscode . TreeItem > {
97- if ( element . treeItem !== undefined )
98- return element . treeItem ;
99-
100- const it = new vscode . TreeItem ( element . toString ( ) ) ;
82+ const treeItem = new vscode . TreeItem ( element . toString ( ) ) ;
10183
102- it . command = {
84+ treeItem . command = {
10385 title : 'Query History Item' ,
10486 command : 'codeQLQueryHistory.itemClicked' ,
10587 arguments : [ element ] ,
10688 } ;
10789
108- element . treeItem = it ;
109- this . updateTreeItemContextValue ( element ) ;
90+ // Mark this query history item according to whether it has a
91+ // SARIF file so that we can make context menu items conditionally
92+ // available.
93+ const hasResults = await element . query . hasInterpretedResults ( ) ;
94+ treeItem . contextValue = hasResults
95+ ? 'interpretedResultsItem'
96+ : 'rawResultsItem' ;
11097
11198 if ( ! element . didRunSuccessfully ) {
112- it . iconPath = this . failedIconPath ;
99+ treeItem . iconPath = this . failedIconPath ;
113100 }
114101
115- return it ;
102+ return treeItem ;
116103 }
117104
118105 getChildren (
@@ -157,8 +144,8 @@ class HistoryTreeDataProvider extends DisposableObject implements QueryHistoryDa
157144 return this . history ;
158145 }
159146
160- refresh ( ) {
161- this . _onDidChangeTreeData . fire ( undefined ) ;
147+ refresh ( CompletedQuery ?: CompletedQuery ) {
148+ this . _onDidChangeTreeData . fire ( CompletedQuery ) ;
162149 }
163150
164151 find ( queryId : number ) : CompletedQuery | undefined {
@@ -367,10 +354,8 @@ export class QueryHistoryManager extends DisposableObject {
367354 } ) ;
368355 // undefined response means the user cancelled the dialog; don't change anything
369356 if ( response !== undefined ) {
370- if ( response === '' )
371- // Interpret empty string response as 'go back to using default'
372- singleItem . options . label = undefined ;
373- else singleItem . options . label = response ;
357+ // Interpret empty string response as 'go back to using default'
358+ singleItem . options . label = response === '' ? undefined : response ;
374359 this . treeDataProvider . refresh ( ) ;
375360 }
376361 }
@@ -695,7 +680,7 @@ the file in the file explorer and dragging it into the workspace.`
695680 } ;
696681 }
697682
698- async updateTreeItemContextValue ( element : CompletedQuery ) : Promise < void > {
699- this . treeDataProvider . updateTreeItemContextValue ( element ) ;
683+ async refreshTreeView ( completedQuery : CompletedQuery ) : Promise < void > {
684+ this . treeDataProvider . refresh ( completedQuery ) ;
700685 }
701686}
0 commit comments