Skip to content

Commit 9e1f44b

Browse files
committed
Move logic to mapUpdatedVariantAnalysis
1 parent 907febe commit 9e1f44b

3 files changed

Lines changed: 38 additions & 20 deletions

File tree

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

Lines changed: 23 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -146,6 +146,7 @@ export class VariantAnalysisManager
146146
new VariantAnalysisMonitor(
147147
app,
148148
this.shouldCancelMonitorVariantAnalysis.bind(this),
149+
this.getVariantAnalysisStatus.bind(this),
149150
),
150151
);
151152
this.variantAnalysisMonitor.onVariantAnalysisChange(
@@ -605,6 +606,19 @@ export class VariantAnalysisManager
605606
return !this.variantAnalyses.has(variantAnalysisId);
606607
}
607608

609+
private getVariantAnalysisStatus(
610+
variantAnalysisId: number,
611+
): VariantAnalysisStatus {
612+
const variantAnalysis = this.variantAnalyses.get(variantAnalysisId);
613+
if (!variantAnalysis) {
614+
throw new Error(
615+
`No variant analysis found with id: ${variantAnalysisId}.`,
616+
);
617+
}
618+
619+
return variantAnalysis.status;
620+
}
621+
608622
public async onVariantAnalysisUpdated(
609623
variantAnalysis: VariantAnalysis | undefined,
610624
): Promise<void> {
@@ -620,14 +634,6 @@ export class VariantAnalysisManager
620634
return;
621635
}
622636

623-
// Maintain the canceling status if we are still canceling.
624-
if (
625-
originalVariantAnalysis.status === VariantAnalysisStatus.Canceling &&
626-
variantAnalysis.status === VariantAnalysisStatus.InProgress
627-
) {
628-
variantAnalysis.status = VariantAnalysisStatus.Canceling;
629-
}
630-
631637
await this.setVariantAnalysis(variantAnalysis);
632638
this._onVariantAnalysisStatusUpdated.fire(variantAnalysis);
633639
}
@@ -851,30 +857,28 @@ export class VariantAnalysisManager
851857
throw new Error(`No variant analysis with id: ${variantAnalysisId}`);
852858
}
853859

854-
await this.onVariantAnalysisUpdated({
855-
...variantAnalysis,
856-
status: VariantAnalysisStatus.Canceling,
857-
});
858-
859860
if (!variantAnalysis.actionsWorkflowRunId) {
860861
throw new Error(
861862
`No workflow run id for variant analysis with id: ${variantAnalysis.id}`,
862863
);
863864
}
864865

866+
await this.onVariantAnalysisUpdated({
867+
...variantAnalysis,
868+
status: VariantAnalysisStatus.Canceling,
869+
});
870+
865871
void showAndLogInformationMessage(
866872
this.app.logger,
867873
"Cancelling variant analysis. This may take a while.",
868874
);
869875
try {
870876
await cancelVariantAnalysis(this.app.credentials, variantAnalysis);
871877
} catch (e) {
872-
if (variantAnalysis.status === VariantAnalysisStatus.Canceling) {
873-
await this.onVariantAnalysisUpdated({
874-
...variantAnalysis,
875-
status: VariantAnalysisStatus.InProgress,
876-
});
877-
}
878+
await this.onVariantAnalysisUpdated({
879+
...variantAnalysis,
880+
status: VariantAnalysisStatus.InProgress,
881+
});
878882
throw e;
879883
}
880884
}

extensions/ql-vscode/src/variant-analysis/variant-analysis-mapper.ts

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ export function mapVariantAnalysis(
4040
databases: submission.databases,
4141
executionStartTime: submission.startTime,
4242
},
43+
undefined,
4344
response,
4445
);
4546
}
@@ -49,6 +50,7 @@ export function mapUpdatedVariantAnalysis(
4950
VariantAnalysis,
5051
"language" | "query" | "queries" | "databases" | "executionStartTime"
5152
>,
53+
currentStatus: VariantAnalysisStatus | undefined,
5254
response: ApiVariantAnalysis,
5355
): VariantAnalysis {
5456
let scannedRepos: VariantAnalysisScannedRepository[] = [];
@@ -66,6 +68,13 @@ export function mapUpdatedVariantAnalysis(
6668
);
6769
}
6870

71+
// Maintain the canceling status if we are still canceling.
72+
const status =
73+
currentStatus === VariantAnalysisStatus.Canceling &&
74+
response.status === "in_progress"
75+
? VariantAnalysisStatus.Canceling
76+
: mapApiStatus(response.status);
77+
6978
const variantAnalysis: VariantAnalysis = {
7079
id: response.id,
7180
controllerRepo: {
@@ -80,7 +89,7 @@ export function mapUpdatedVariantAnalysis(
8089
executionStartTime: previousVariantAnalysis.executionStartTime,
8190
createdAt: response.created_at,
8291
updatedAt: response.updated_at,
83-
status: mapApiStatus(response.status),
92+
status,
8493
completedAt: response.completed_at,
8594
actionsWorkflowRunId: response.actions_workflow_run_id,
8695
scannedRepos,

extensions/ql-vscode/src/variant-analysis/variant-analysis-monitor.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import { RequestError } from "@octokit/request-error";
55
import type {
66
VariantAnalysis,
77
VariantAnalysisScannedRepository,
8+
VariantAnalysisStatus,
89
} from "./shared/variant-analysis";
910
import {
1011
isFinalVariantAnalysisStatus,
@@ -36,6 +37,9 @@ export class VariantAnalysisMonitor extends DisposableObject {
3637
private readonly shouldCancelMonitor: (
3738
variantAnalysisId: number,
3839
) => Promise<boolean>,
40+
private readonly getVariantAnalysisStatus: (
41+
variantAnalysisId: number,
42+
) => VariantAnalysisStatus,
3943
) {
4044
super();
4145
}
@@ -121,6 +125,7 @@ export class VariantAnalysisMonitor extends DisposableObject {
121125

122126
variantAnalysis = mapUpdatedVariantAnalysis(
123127
variantAnalysis,
128+
this.getVariantAnalysisStatus(variantAnalysis.id),
124129
variantAnalysisSummary,
125130
);
126131

0 commit comments

Comments
 (0)