Skip to content

Commit 7835ba4

Browse files
Pull out getIconPath and getContextValue methods
1 parent 78f0917 commit 7835ba4

File tree

1 file changed

+29
-15
lines changed

1 file changed

+29
-15
lines changed

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

Lines changed: 29 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -173,33 +173,47 @@ export class HistoryTreeDataProvider extends DisposableObject implements TreeDat
173173

174174
// Populate the icon and the context value. We use the context value to
175175
// control which commands are visible in the context menu.
176-
let hasResults;
176+
treeItem.iconPath = this.getIconPath(element);
177+
treeItem.contextValue = await this.getContextValue(element);
178+
179+
return treeItem;
180+
}
181+
182+
private getIconPath(element: QueryHistoryInfo): ThemeIcon | string {
177183
switch (element.status) {
178184
case QueryStatus.InProgress:
179-
treeItem.iconPath = new ThemeIcon('sync~spin');
180-
treeItem.contextValue = element.t === 'local' ? 'inProgressResultsItem' : 'inProgressRemoteResultsItem';
181-
break;
185+
return new ThemeIcon('sync~spin');
182186
case QueryStatus.Completed:
183187
if (element.t === 'local') {
184-
hasResults = await element.completedQuery?.query.hasInterpretedResults();
185-
treeItem.iconPath = this.localSuccessIconPath;
186-
treeItem.contextValue = hasResults
188+
return this.localSuccessIconPath;
189+
} else {
190+
return this.remoteSuccessIconPath;
191+
}
192+
case QueryStatus.Failed:
193+
return this.failedIconPath;
194+
default:
195+
assertNever(element.status);
196+
}
197+
}
198+
199+
private async getContextValue(element: QueryHistoryInfo): Promise<string> {
200+
switch (element.status) {
201+
case QueryStatus.InProgress:
202+
return element.t === 'local' ? 'inProgressResultsItem' : 'inProgressRemoteResultsItem';
203+
case QueryStatus.Completed:
204+
if (element.t === 'local') {
205+
const hasResults = await element.completedQuery?.query.hasInterpretedResults();
206+
return hasResults
187207
? 'interpretedResultsItem'
188208
: 'rawResultsItem';
189209
} else {
190-
treeItem.iconPath = this.remoteSuccessIconPath;
191-
treeItem.contextValue = 'remoteResultsItem';
210+
return 'remoteResultsItem';
192211
}
193-
break;
194212
case QueryStatus.Failed:
195-
treeItem.iconPath = this.failedIconPath;
196-
treeItem.contextValue = element.t === 'local' ? 'cancelledResultsItem' : 'cancelledRemoteResultsItem';
197-
break;
213+
return element.t === 'local' ? 'cancelledResultsItem' : 'cancelledRemoteResultsItem';
198214
default:
199215
assertNever(element.status);
200216
}
201-
202-
return treeItem;
203217
}
204218

205219
getChildren(

0 commit comments

Comments
 (0)