Skip to content

Commit 2baa53a

Browse files
committed
Post message to view when variant analysis is updated
1 parent 1557901 commit 2baa53a

3 files changed

Lines changed: 40 additions & 1 deletion

File tree

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

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import * as sarif from 'sarif';
22
import { AnalysisResults } from '../remote-queries/shared/analysis-result';
33
import { AnalysisSummary, RemoteQueryResult } from '../remote-queries/shared/remote-query-result';
44
import { RawResultSet, ResultRow, ResultSetSchema, Column, ResolvableLocationValue } from './bqrs-cli-types';
5+
import { VariantAnalysis } from '../remote-queries/shared/variant-analysis';
56

67
/**
78
* This module contains types and code that are shared between
@@ -429,3 +430,14 @@ export interface CopyRepoListMessage {
429430
t: 'copyRepoList';
430431
queryId: string;
431432
}
433+
434+
export interface SetVariantAnalysisMessage {
435+
t: 'setVariantAnalysis';
436+
variantAnalysis: VariantAnalysis;
437+
}
438+
439+
export type ToVariantAnalysisMessage =
440+
| SetVariantAnalysisMessage;
441+
442+
export type FromVariantAnalysisMessage =
443+
| ViewLoadedMsg;

extensions/ql-vscode/src/remote-queries/variant-analysis-manager.ts

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ export class VariantAnalysisManager extends DisposableObject implements VariantA
2626
) {
2727
super();
2828
this.variantAnalysisMonitor = this.push(new VariantAnalysisMonitor(ctx, logger));
29+
this.variantAnalysisMonitor.onVariantAnalysisChange(this.onVariantAnalysisUpdated.bind(this));
2930
}
3031

3132
public async showView(variantAnalysisId: number): Promise<void> {
@@ -51,6 +52,19 @@ export class VariantAnalysisManager extends DisposableObject implements VariantA
5152
this.views.delete(view.variantAnalysisId);
5253
}
5354

55+
private async onVariantAnalysisUpdated(variantAnalysis: VariantAnalysis | undefined): Promise<void> {
56+
if (!variantAnalysis) {
57+
return;
58+
}
59+
60+
const view = this.views.get(variantAnalysis.id);
61+
if (!view) {
62+
return;
63+
}
64+
65+
await view.updateView(variantAnalysis);
66+
}
67+
5468
public async monitorVariantAnalysis(
5569
variantAnalysis: VariantAnalysis,
5670
cancellationToken: CancellationToken

extensions/ql-vscode/src/remote-queries/variant-analysis-view.ts

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,10 @@ import { AbstractWebview, WebviewPanelConfig } from '../abstract-webview';
33
import { WebviewMessage } from '../interface-utils';
44
import { logger } from '../logging';
55
import { VariantAnalysisViewInterface, VariantAnalysisViewManager } from './variant-analysis-view-manager';
6+
import { VariantAnalysis } from './shared/variant-analysis';
7+
import { FromVariantAnalysisMessage, ToVariantAnalysisMessage } from '../pure/interface-types';
68

7-
export class VariantAnalysisView extends AbstractWebview<WebviewMessage, WebviewMessage> implements VariantAnalysisViewInterface {
9+
export class VariantAnalysisView extends AbstractWebview<ToVariantAnalysisMessage, FromVariantAnalysisMessage> implements VariantAnalysisViewInterface {
810
public constructor(
911
ctx: ExtensionContext,
1012
public readonly variantAnalysisId: number,
@@ -19,6 +21,17 @@ export class VariantAnalysisView extends AbstractWebview<WebviewMessage, Webview
1921
this.getPanel().reveal(undefined, true);
2022
}
2123

24+
public async updateView(variantAnalysis: VariantAnalysis): Promise<void> {
25+
if (!this.isShowingPanel) {
26+
return;
27+
}
28+
29+
await this.postMessage({
30+
t: 'setVariantAnalysis',
31+
variantAnalysis,
32+
});
33+
}
34+
2235
protected getPanelConfig(): WebviewPanelConfig {
2336
return {
2437
viewId: 'variantAnalysisView',

0 commit comments

Comments
 (0)