Skip to content

Commit cf377a7

Browse files
committed
Factor out common code when updating sort results
1 parent ecc8088 commit cf377a7

File tree

1 file changed

+15
-20
lines changed

1 file changed

+15
-20
lines changed

extensions/ql-vscode/src/interface.ts

Lines changed: 15 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -161,6 +161,17 @@ export class InterfaceManager extends DisposableObject {
161161
return this._panel;
162162
}
163163

164+
private async changeSortState(update: (query: CompletedQuery) => Promise<void>): Promise<void> {
165+
if (this._displayedQuery === undefined) {
166+
showAndLogErrorMessage("Failed to sort results since evaluation info was unknown.");
167+
return;
168+
}
169+
// Notify the webview that it should expect new results.
170+
await this.postMessage({ t: 'resultsUpdating' });
171+
await update(this._displayedQuery);
172+
await this.showResults(this._displayedQuery, WebviewReveal.NotForced, true);
173+
}
174+
164175
private async handleMsgFromView(msg: FromResultsViewMsg): Promise<void> {
165176
switch (msg.t) {
166177
case 'viewSourceFile': {
@@ -202,28 +213,12 @@ export class InterfaceManager extends DisposableObject {
202213
this._panelLoadedCallBacks.forEach(cb => cb());
203214
this._panelLoadedCallBacks = [];
204215
break;
205-
case 'changeSort': {
206-
if (this._displayedQuery === undefined) {
207-
showAndLogErrorMessage("Failed to sort results since evaluation info was unknown.");
208-
break;
209-
}
210-
// Notify the webview that it should expect new results.
211-
await this.postMessage({ t: 'resultsUpdating' });
212-
await this._displayedQuery.updateSortState(this.cliServer, msg.resultSetName, msg.sortState);
213-
await this.showResults(this._displayedQuery, WebviewReveal.NotForced, true);
216+
case 'changeSort':
217+
await this.changeSortState((query) => query.updateSortState(this.cliServer, msg.resultSetName, msg.sortState));
214218
break;
215-
}
216-
case 'changeInterpretedSort': {
217-
if (this._displayedQuery === undefined) {
218-
showAndLogErrorMessage("Failed to sort results since evaluation info was unknown.");
219-
break;
220-
}
221-
// Notify the webview that it should expect new results.
222-
await this.postMessage({ t: 'resultsUpdating' });
223-
await this._displayedQuery.updateInterpretedSortState(this.cliServer, msg.sortState);
224-
await this.showResults(this._displayedQuery, WebviewReveal.NotForced, true);
219+
case 'changeInterpretedSort':
220+
await this.changeSortState((query) => query.updateInterpretedSortState(this.cliServer, msg.sortState));
225221
break;
226-
}
227222
default:
228223
assertNever(msg);
229224
}

0 commit comments

Comments
 (0)