Skip to content

Commit 5174afe

Browse files
Only fire _onVariantAnalysisChange from one place
1 parent be2ca6c commit 5174afe

File tree

2 files changed

+15
-16
lines changed

2 files changed

+15
-16
lines changed

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

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,13 @@ export enum VariantAnalysisStatus {
4747
Canceled = 'canceled',
4848
}
4949

50+
export function isFinalVariantAnalysisStatus(status: VariantAnalysisStatus): boolean {
51+
return [
52+
// All states that indicates the analysis has completed and cannot change status anymore.
53+
VariantAnalysisStatus.Succeeded, VariantAnalysisStatus.Failed, VariantAnalysisStatus.Canceled,
54+
].includes(status);
55+
}
56+
5057
export enum VariantAnalysisFailureReason {
5158
NoReposQueried = 'noReposQueried',
5259
InternalError = 'internalError',

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

Lines changed: 8 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,13 @@ import { ExtensionContext, CancellationToken, commands, EventEmitter } from 'vsc
22
import { Credentials } from '../authentication';
33
import * as ghApiClient from './gh-api/gh-api-client';
44

5-
import { VariantAnalysis, VariantAnalysisStatus } from './shared/variant-analysis';
5+
import { isFinalVariantAnalysisStatus, VariantAnalysis } from './shared/variant-analysis';
66
import {
77
VariantAnalysis as VariantAnalysisApiResponse,
88
VariantAnalysisScannedRepository
99
} from './gh-api/variant-analysis';
1010
import { VariantAnalysisMonitorResult } from './shared/variant-analysis-monitor-result';
11-
import { processFailureReason, processUpdatedVariantAnalysis } from './variant-analysis-processor';
11+
import { processUpdatedVariantAnalysis } from './variant-analysis-processor';
1212
import { DisposableObject } from '../pure/disposable-object';
1313

1414
export class VariantAnalysisMonitor extends DisposableObject {
@@ -36,46 +36,38 @@ export class VariantAnalysisMonitor extends DisposableObject {
3636
throw Error('Error authenticating with GitHub');
3737
}
3838

39-
let variantAnalysisSummary: VariantAnalysisApiResponse;
4039
let attemptCount = 0;
4140
const scannedReposDownloaded: number[] = [];
4241

43-
this._onVariantAnalysisChange.fire(variantAnalysis);
44-
4542
while (attemptCount <= VariantAnalysisMonitor.maxAttemptCount) {
4643
await this.sleep(VariantAnalysisMonitor.sleepTime);
4744

4845
if (cancellationToken && cancellationToken.isCancellationRequested) {
4946
return { status: 'Cancelled', error: 'Variant Analysis was canceled.' };
5047
}
5148

52-
variantAnalysisSummary = await ghApiClient.getVariantAnalysis(
49+
const variantAnalysisSummary = await ghApiClient.getVariantAnalysis(
5350
credentials,
5451
variantAnalysis.controllerRepo.id,
5552
variantAnalysis.id
5653
);
5754

58-
if (variantAnalysisSummary.failure_reason) {
59-
variantAnalysis.status = VariantAnalysisStatus.Failed;
60-
variantAnalysis.failureReason = processFailureReason(variantAnalysisSummary.failure_reason);
55+
variantAnalysis = processUpdatedVariantAnalysis(variantAnalysis, variantAnalysisSummary);
6156

62-
this._onVariantAnalysisChange.fire(variantAnalysis);
57+
this._onVariantAnalysisChange.fire(variantAnalysis);
6358

59+
if (variantAnalysis.failureReason) {
6460
return {
6561
status: 'Failed',
66-
error: `Variant Analysis has failed: ${variantAnalysisSummary.failure_reason}`,
62+
error: `Variant Analysis has failed: ${variantAnalysis.failureReason}`,
6763
variantAnalysis: variantAnalysis
6864
};
6965
}
7066

71-
variantAnalysis = processUpdatedVariantAnalysis(variantAnalysis, variantAnalysisSummary);
72-
73-
this._onVariantAnalysisChange.fire(variantAnalysis);
74-
7567
const downloadedRepos = this.downloadVariantAnalysisResults(variantAnalysisSummary, scannedReposDownloaded);
7668
scannedReposDownloaded.push(...downloadedRepos);
7769

78-
if (variantAnalysisSummary.status === 'completed') {
70+
if (isFinalVariantAnalysisStatus(variantAnalysis.status)) {
7971
break;
8072
}
8173

0 commit comments

Comments
 (0)