Skip to content

Commit 7fe9983

Browse files
committed
Always send FileFilteredResults to prevent infinite re-request loop
When loadFileFilteredResults could not produce results (e.g. 0-row table, graph table, or no displayed query), it sent results: undefined which the webview ignored, leaving it in the loading state and causing repeated re-requests on every render. Now always send a FileFilteredResults object so the webview marks the request as completed. Made SetFileFilteredResultsMsg.results non-optional to enforce this at the type level.
1 parent 66fc839 commit 7fe9983

File tree

3 files changed

+24
-24
lines changed

3 files changed

+24
-24
lines changed

extensions/ql-vscode/src/common/interface-types.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -271,7 +271,7 @@ export interface FileFilteredResults {
271271

272272
interface SetFileFilteredResultsMsg {
273273
t: "setFileFilteredResults";
274-
results: FileFilteredResults | undefined;
274+
results: FileFilteredResults;
275275
}
276276

277277
/**

extensions/ql-vscode/src/local-queries/results-view.ts

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1177,6 +1177,10 @@ export class ResultsView extends AbstractWebview<
11771177
): Promise<void> {
11781178
const query = this._displayedQuery;
11791179
if (!query) {
1180+
void this.postMessage({
1181+
t: "setFileFilteredResults",
1182+
results: { fileUri, selectedTable },
1183+
});
11801184
return;
11811185
}
11821186

@@ -1230,15 +1234,12 @@ export class ResultsView extends AbstractWebview<
12301234

12311235
void this.postMessage({
12321236
t: "setFileFilteredResults",
1233-
results:
1234-
rawRows !== undefined || sarifResults !== undefined
1235-
? {
1236-
fileUri,
1237-
selectedTable,
1238-
rawRows,
1239-
sarifResults,
1240-
}
1241-
: undefined,
1237+
results: {
1238+
fileUri,
1239+
selectedTable,
1240+
rawRows,
1241+
sarifResults,
1242+
},
12421243
});
12431244
}
12441245

extensions/ql-vscode/src/view/results/ResultsApp.tsx

Lines changed: 13 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -276,21 +276,20 @@ export function ResultsApp() {
276276
}
277277
break;
278278

279-
case "setFileFilteredResults":
280-
if (msg.results != null) {
281-
const results = msg.results;
282-
setState((prev) => {
283-
if (
284-
results.fileUri === prev.editorSelection?.fileUri &&
285-
results.selectedTable === prev.selectedTable &&
286-
prev.fileFilteredResults === undefined
287-
) {
288-
return { ...prev, fileFilteredResults: results };
289-
}
290-
return prev;
291-
});
292-
}
279+
case "setFileFilteredResults": {
280+
const results = msg.results;
281+
setState((prev) => {
282+
if (
283+
results.fileUri === prev.editorSelection?.fileUri &&
284+
results.selectedTable === prev.selectedTable &&
285+
prev.fileFilteredResults === undefined
286+
) {
287+
return { ...prev, fileFilteredResults: results };
288+
}
289+
return prev;
290+
});
293291
break;
292+
}
294293

295294
default:
296295
assertNever(msg);

0 commit comments

Comments
 (0)